본문 바로가기

개발/코딩테스트30

백준 1068번: 트리 [JAVA] https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 1 - 배열 사용 루트 노드부터 시작하여 자식을 탐색하는 재귀 함수를 작성한다. 자식이 없을 경우, 리프 노드의 개수를 늘리고 재귀를 종료한다. 지울 노드의 자식들은 같이 사라지므로 지울 노드의 방문 여부를 true로 바꿔놓으면 그 아래 자식들은 탐색하지 않을 수 있다. 주어진 입력이 자식이 아닌 부모 노드의 인덱스를 알려주기 때문에, 부모 노드의 인덱스가 -1인 노드를 루트 노드로 지.. 2023. 3. 15.
9742번: 순열 https://www.acmicpc.net/problem/9742 9742번: 순열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 문자열은 서로 다른 숫자와 알파벳으로 이루어져 있으며, 길이는 최대 10이다. 또한, 사전 www.acmicpc.net 풀이 주어진 문자열에 대한 모든 순열을 찾는 재귀함수를 작성한다. 찾은 문자열의 개수를 받는 변수 num을 만들어준 뒤, num이 N번째일 때 해당 순열을 출력하고 재귀를 멈춘다. 만약 모든 순열을 찾았는데도 N번째가 되지 못한 경우 No permutation을 출력한다. + 입력값의 개수가 정해져있기 않기 때문에 EOF 처리가 필요하다. EOF 처리 EOF란? End of File, 데이터 소스로부터.. 2023. 3. 15.
EOF 처리 EOF란? End of File, 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없다는 뜻이다. Scanner 클래스 hasNext() 메소드를 사용 입력된 토큰이 있으면 true를 반환하고, 그렇지 않을 경우 false를 반환 Scanner sc = new Scanner(System.in); while(sc.hasNext()) { } BufferedReader 클래스 br.readLine()으로 입력값을 계속 읽되, 읽은 값이 null이 되면 반복문을 종료하는 방식 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String input = ""; while((input = bf.readLine()) != null &.. 2023. 3. 15.
백준 15650번: N과 M(2) [JAVA] https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 조합 구하기 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N; static int M; static boolean isSelected[]; stati.. 2023. 3. 15.