Baekjoon - 11725

Tadap·2023년 11월 3일
0

Baekjoon

목록 보기
71/94

문제

Solved.ac Class4

1차시도

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int size = Integer.parseInt(br.readLine());

		int[] data = new int[size + 1];
		boolean[] isVisit = new boolean[size + 1];
		isVisit[1] = true;
		for (int i = 1; i < size + 1; i++) {
			data[i] = i;
		}

		for (int i = 1; i < size; i++) {
			String[] connectionInfo = br.readLine().split(" ");
			int d1 = Integer.parseInt(connectionInfo[0]);
			int d2 = Integer.parseInt(connectionInfo[1]);

			if (isVisit[d1]) {
				isVisit[d2] = true;
				data[d2] = d1;
			} else {
				isVisit[d1] = true;
				data[d1] = d2;
			}
		}

		for (int i = 2; i < size + 1; i++) {
			sb.append(data[i]).append("\n");
		}
		System.out.println(sb);
	}
}

설마 맨 처음 1부터 알려주나라는 안일한 생각
역시 그럴리가

틀렸습니다

2차시도

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		int size = Integer.parseInt(br.readLine());

		ArrayList<ArrayList<Integer>> tree = new ArrayList<>();
		boolean[] isVisit = new boolean[size];
		int[] temp = new int[size];

		for (int i = 0; i < size; i++) {
			tree.add(new ArrayList<>());
		}

		for (int i = 1; i < size; i++) {
			String[] data = br.readLine().split(" ");
			int data1 = Integer.parseInt(data[0]) - 1;
			int data2 = Integer.parseInt(data[1]) - 1;
			tree.get(data1).add(data2);
			tree.get(data2).add(data1);
		}

		Queue<Integer> queue = new LinkedList<>();
		queue.add(0);
		isVisit[0] = true;
		while (!queue.isEmpty()) {
			int now = queue.remove();
			ArrayList<Integer> visitNow = tree.get(now);
			for (int i : visitNow) {
				if (!isVisit[i]) {
					isVisit[i] = true;
					temp[i] = now;
					queue.add(i);
				}
			}
		}

		for (int i = 1; i < size; i++) {
			sb.append(temp[i] + 1).append("\n");
		}
		System.out.println(sb);
	}
}

서로 그래프로 연결한다. 이후 1번부터 방문한다.
방문하지 않았으면 큐에다 넣고 돌리면서 부모를 설정해준다

성공

ToKotlin

fun main() {
    val sb = StringBuilder()

    val size = readln().toInt()

    val tree = ArrayList<ArrayList<Int>>()
    val isVisit = BooleanArray(size)
    val temp = IntArray(size)

    for (i in 0..<size) {
        tree.add(ArrayList())
    }

    for (i in 1..<size) {
        val data = readln().split(" ")
        val data1 = data[0].toInt() - 1
        val data2 = data[1].toInt() - 1
        tree[data1].add(data2)
        tree[data2].add(data1)
    }

    val queue: Queue<Int> = LinkedList()
    queue.add(0)
    isVisit[0] = true
    while (queue.isNotEmpty()) {
        val now = queue.remove()
        val visitNow = tree[now]
        for (i in visitNow) {
            if (!isVisit[i]) {
                isVisit[i] = true
                temp[i] = now
                queue.add(i)
            }
        }
    }

    for (i in 1..<size) {
        sb.append(temp[i] + 1).append("\n")
    }
    print(sb)
}

0개의 댓글