풀이 입력으로 들어온 배열이 1차원으로 들어왔다. 연산을 편하게 하기 위해 우선 2차원 배열로 옮기는 작업을 수행하였다. 그다음부터는 다음 순서대로 진행하였다. 현재 칸이 '.'가 아니면 현재 칸을 기준으로 오른쪽, 아래, 오른쪽 아래를 검사하여 4칸의 문자가 같은지 비교를 한다. 만약 4개 전부 같은 문자면 방문 배열 4개를 전부 true로 해준다. true로 해놓은 곳을 전부 '.'로 바꾼다. 아래부터 탐색해서 위로 올라가면서 '.'인 것을 찾는다. 찾으면, 해당 행을 한 칸씩 위로 올라가 보면서 '.'아닌 것이 나올 때까지 탐색하여 나오면 처음 시작 위치로 대입하고 그곳은 '.'로 바꾼다. 그리고 메서드를 종료한다. 이런 식으로 while문을 통해 계속 시도한다. 언제까지 하냐면 '.' 바꿀 수 있..

3주차 과제: 연산자 연산자 산술 연산자 비트 연산자 관계 연산자 논리 연산자 산술 연산자 int a=10; int b=20; System.out.println(a+b); //30 System.out.println(a-b); //-10 System.out.println(a*b); // 200 System.out.println(a/b); // 0.5 System.out.println(a%b); // 10 비트 연산자 System.out.println(22); // 10에다가 2번 나누기 2하는 거랑 같다. 관계 연산자 System.out.println(3>4); // 3보다 4가 크므로 false를 출력. System.out.println(10 {실행문...} @FunctionalInterface publ..
풀이 해결하기 전까지 3가지 방법을 시도하였다. 단순히 배열로만 풀기 ArrayList와 자신과 부모를 저장하는 클래스를 이용하기 ArrayList 배열과 DFS를 통해 위 3가지 방법 전부 시간초과, 틀렸습니다로 실패했다. 결국 해결한 방법은 BFS탐색으로 ArrayList배열과 Queue를 같이 사용하였다. Top-down 방식으로 루트노드 1부터 시작해서 인접한 노드를 인덱스로 하는 배열의 값이 0이면 큐에서 poll한 값으로 배열에 값을 대입하였다. 코드