본문 바로가기

메인17

[백준/BAEKJOON] 11725 : 트리의 부모 찾기 with Java 문제 루트 없는 트리가 주어진다. 이 때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. 출력 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. 입력 예시 1 7 1 6 6 3 3 5 4 1 2 4 4 7 출력 예시 1 4 6 1 3 1 4 아이디어 BFS와 DFS 모두 사용하여 해결할 수 있는 문제입니다. 이번 문제에서는 BFS로 풀이 과정을 설명하겠습니다. 첫 번째로 각 정점의 연결 상태를 어떻게 표현할지 고민해야 합니다. 우리는 배열을 사용하여 인접행렬을 만들 수도 있고, Ar.. 2022. 9. 11.
[자바/Java] 배열을 초기화 했을 때의 default 값 우선 자바는 다음과 같은 형태로 배열을 초기화 합니다. int [] arr; arr = new int [5]; String [] arr2 = new String [8]; char [] arr3 = {a, b, c}; 세 번째 경우는 배열을 선언함과 동시에 값을 지정해주었지만, 앞 전의 두 가지 같은 경우는 따로 값을 지정해두지는 않았습니다. 이 때, 배열에는 무슨 값이 들어 있을까요? 우선 어떤 데이터 타입으로 배열을 초기화 하는지에 따라 값이 다르게 됩니다. String을 포함한 객체 타입 일 때 : null byte / short / int / long 타입 일 때 : 0 float / double 과 같은 실수 타입 일 때 : 0.0 boolean 일 때 : false char 일 때 : \u000.. 2022. 8. 26.
3장 배열, 구조체, 포인터 배열 배열은 대부분의 프로그래밍 언어에서 기본적으로 제공하는 자료 구조 중 하나입니다. 배열은 동일한 데이터 타입들을 연속적으로 저장해야 할 때 쓰입니다. 배열을 사용하기 위해서는 배열의 데이터 타입과 배열의 크기 등을 지정해주면 됩니다. int [] IntArr = new int [10]; double [] DblArr = new double [20]; (C++로 표현되었음을 알려드립니다) 위 두 코드를 살펴보면 첫번째 코드는 "IntArr이라는 이름의 배열을 선언하는데 데이터 타입은 int, 크기는 10으로 할거야!" 라는 뜻이고 두번째 코드는 "DblArr이라는 이름의 배열을 선언할건데 데이터 타입은 double, 크기는 20이야!" 라는 뜻입니다. 이처럼 배열을 정의해주면 원하는 위치 (index.. 2022. 4. 17.
2장 순환 순환이란? 순환은 자기 자신을 호출함으로써 문제를 해결하는 프로그래밍 기법입니다! 설정한 조건까지 끊임없이 자기 자신을 호출하여 값을 도출해내는 것이 반복문과 비슷한 성질을 가지고 있죠. 실제로도 반복문을 순환적으로 변환시킬 수 있고, 순환 함수를 반복문의 형태로 정의할 수도 있습니다! 순환은 팩토리얼 예제를 통해 보다 더 쉽게 이해할 수 있습니다. 팩토리얼은 1과 자기 자신까지의 정수를 모두 곱한 것을 의미합니다. int factorial(int n) { if( n 2022. 4. 17.