728x90
반응형
한 번만 등장한 문자
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Map;
public class Main1 {
public static void main(String[] args) {
System.out.println(solution("abcabcadc"));
System.out.println(solution("abdc"));
System.out.println(solution("hello"));
}
/**
* 솔루션
* @param s 문자열
* @return 문자열
*/
public static String solution(String s) {
StringBuffer sb = new StringBuffer();
LinkedList<Character> list = new LinkedList<>();
Hashtable<Character, Integer> ht = new Hashtable<>();
// 해시테이블에 c로된 key가 없다면 key : c, value = 1 데이터 삽입
// c로된 key가 있다면 key c의 value를 + 1
for (char c : s.toCharArray()) {
if (!ht.containsKey(c)) {
ht.put(c, 1);
} else {
ht.replace(c, ht.get(c) + 1);
}
}
// 해시테이블의 key value를 순회하면서 value가 1인 (즉, 중복되지 않은 글자) 값을 list에 추가
for (Map.Entry<Character, Integer> e : ht.entrySet()) {
if (e.getValue() == 1) {
list.add(e.getKey());
}
}
list.sort(Character::compareTo); // 리스트 정렬
for (Character c : list) {
sb.append(c); // 스트링버퍼에 글자 추가
}
return sb.toString();
}
}
배열 회전시키기
public class Main2 {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int[] result = {};
result = solution(arr, "right");
for (int num : result) {
System.out.print(num + " ");
}
System.out.println();
int[] arr1 = {4, 455, 6, 4, -1, 45, 6};
result = solution(arr1, "left");
for (int num : result) {
System.out.print(num + " ");
}
}
/**
* 솔루션
* @param numbers 숫자배열
* @param direction 방향
* @return 숫자배열
*/
public static int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if (direction.equals("right")) { // 오른쪽으로 한 칸 회전
for (int i = 1; i < numbers.length; i++) {
answer[i] = numbers[i - 1];
if (i == numbers.length - 1) {
answer[0] = numbers[numbers.length - 1];
}
}
} else { // 오른쪽으로 한 칸 회전
for (int i = 1; i < numbers.length; i++) {
answer[i - 1] = numbers[i];
if (i == numbers.length - 1) {
answer[numbers.length - 1] = numbers[0];
}
}
}
return answer;
}
}
5613번 계산기 프로그램
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int result = Integer.parseInt(br.readLine());
while (true) {
String s = br.readLine();
if (s.equals("=")) {
break;
}
int num = Integer.parseInt(br.readLine());
if (s.equals("+")) {
result += num;
} else if (s.equals("-")) {
result -= num;
} else if (s.equals("*")) {
result *= num;
} else {
result /= num;
}
}
System.out.println(result);
br.close();
}
}
문자열안에 문자열
public class Main4 {
public static void main(String[] args) {
System.out.println(solution("ab6CDE443fgh22iJKlmn1o", "6CD"));
System.out.println(solution("ppprrrogrammers", "pppp"));
System.out.println(solution("AbcAbcA", "AAA"));
}
/**
* 솔루션
* @param str1 문자열
* @param str2 문자열
* @return 포함 여부
*/
public static int solution(String str1, String str2) {
return str1.contains(str2) ? 1 : 2;
}
}
11725번 트리의 부모 찾기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main5 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 노드의 개수
boolean[] visited = new boolean[N + 1]; // 방문 여부
int[] parents = new int[N + 1]; // 부모 노드
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
for (int i = 0; i <= N; i++) {
list.add(new ArrayList<>());
}
for (int i = 0; i < N - 1; i++) {
String[] s = br.readLine().split(" ");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
list.get(a).add(b);
list.get(b).add(a);
}
dfs(visited, list, parents, 1);
for (int i = 2; i <= N; i++) {
System.out.println(parents[i]);
}
br.close();
}
/**
* dfs
* @param visited 방문여부 배열
* @param list 리스트
* @param parents 부모노드 배열
* @param i 노드
*/
public static void dfs(boolean[] visited, ArrayList<ArrayList<Integer>> list, int[] parents, int i) {
visited[i] = true;
for (int num : list.get(i)) {
if (!visited[num]) {
parents[num] = i;
dfs(visited, list, parents, num);
}
}
}
}
728x90
반응형
'📌Zero-base' 카테고리의 다른 글
백엔드 신입 개발자가 쌓아야 하는 역량은? 제로베이스 백엔드스쿨 (0) | 2024.05.01 |
---|---|
Java 람다식, 스트림 (0) | 2024.04.29 |
코딩테스트 힌트 문제 풀기 (프로그래머스, 백준) 자바 (1) | 2024.04.23 |
앞으로의 백엔드 개발자가 되기 위한 공부 계획 (feat. 백엔드 공부법) 제로베이스 백엔드스쿨 (0) | 2024.04.22 |
백준 24174번 힙 정렬2 제로베이스 자료구조 마지막 주제 : Heap (1) | 2024.04.20 |