목록Java (371)
기록방
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/28vSx/btr8I0YuK9F/wfKmmucQ1kkV94sCOlsrGk/img.png)
👉 문제링크 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 🔸 문제 분석 🔸 N x N 격자공간에서 좌상단부터 우상단으로 파이프를 이동시킬 수 있는 경우의 수를 출력한다. 파이프는 오른쪽, 우하단 대각선, 아래로 밀 수 있다. 격자공간에는 돌이 있다. 파이프를 돌릴 때 확보되어야 하는 공간에 돌이 있거나 격자 공간을 벗어나서는 안된다. DFS로 끝까지 도착하는 경우를 카운트한다. 기존 가로 일때는 가로와 대각선, 기존 세로 일때는 세로와 대각선, 기존 대각선 일때는 세 가지 모든 경우..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cJJTAR/btr8wPj9wnj/BkRbDWL0einusgbSlPsQg0/img.png)
👉 문제링크 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 🔸 문제 분석 🔸 3개 장대와 N개의 원판이 있는 하노이탑 문제를 구현한다. 원판을 옮긴 횟수를 출력한다. 원판을 옮길 때를 재귀로 나눠 구현한다. 원판의 높이가 1일때와 그보다 클 때로 나눠 생각한다. 예를 들어 2개의 원판을 옮길 때, 첫 원판은 임시 지점에 놓는다. 두 번째 원판은 목적지에 놓는다. 첫 원판을 목적지의 두 번째 원판 위에 놓는다. 따라서 세 막대를 시작, 임시, 목적 세 지점으로 나눠 재귀적으로 생각 할 수 있다. N이 너무 커지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bOJnbC/btr8Im1BK57/aJoiVw2FIq9dI7WxShrQ50/img.png)
👉 문제링크 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 🔸 문제 분석 🔸 N명 중에서 N/2명을 뽑았을때 나오는 시너지 차이의 최소값을 출력한다. N명에서 N/2를 뽑는 조합 문제이다. 반대 팀으로 뽑히면 같은 값을 중복으로 검사하게 되지만, 시간복잡도가 허용범위 내이므로 감안해도 된다. 조합으로 뽑아 시너지 차이의 최소값을 업데이트한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bOeSsc/btr8Ity75qn/66SrQolXM2GxZfdKKauUU1/img.png)
👉 문제링크 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 🔸 문제 분석 🔸 공기청정기로 인한 위쪽 공기 순환과 아래쪽 공기 순환이 일어난다. 먼지는 매 초 확산한다. T초 후 방에 남아있는 미세먼지의 합을 출력한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private st..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bvDg5S/btr8vs97yOe/RDpstKgA060FX0UkNTSEn0/img.png)
👉 문제링크 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 🔸 문제 분석 🔸 트리의 루트 노드와 각 인덱스 별 노드의 부모 노드 정보가 입력된다. 한 노드를 지우면 아래 자손 노드들이 모두 지워진다. 남은 리프노드의 수를 출력한다. 인접 리스트를 만들어 연결 정보를 저장한다. 만약 아직 부모노드가 등장하지 않았다면, 큐에 넣고 순서를 기다린다. 삭제할 때 DFS를 사용해 자식 노드를 모두 삭제한다. 🔸 코드 🔸 import java.io.BufferedReader; import java.io.IOExc..