목록코딩테스트준비 (54)
원하는 것은 뭐든지
문제 풀이 예상 시간보다 지나가면 다른 해석을 보고 있습니다. 문제풀이문제 해석1. N개의 노드가 트리 형태로 주어진다.2. M개의 노드 간의 관계가 주어진다.3. 그 뒤로 입력되는 노드 쌍 간의 거리를 구하라문제 풀이1. 출발 노드에서 각 노드의 거리를 구하면 된다.2. 음의 값도 존재하지 않고 N도 충분히 크다는 판단하에 다익스트라 사용3. 방향이 없는 노드이므로 양쪽으로 저장4. `distance` 배열을 선언하여 노드에서 각 노드까지의 거리를 저장한다.5. 만약에 저장된 배열이 없을 경우만 알고리즘을 사용한다.6. 다익스트라의 구현과정은 코드에 쓰여있다.소스코드package online.judge.baekjoon;import java.io.BufferedReader;import java.io.IO..
문제 풀이 예상 시간보다 지나가면 다른 해석을 보고 있습니다. 문제풀이문제 해석1. 인원수와 그 인원 수 간의 일부 키 관계가 주어진다. 2. 주어진 관계만으로 내가 몇 번째인지 알 수 있는 번호는 몇 개인지 출력해라.문제 풀이1. 나와 모든 인원의 관계를 명확히 알아야 내가 몇번째 인지 알 수 있다.2. 모든 인원과의 관계를 알기 위해서는 나와 직간접적으로 닿아있어야 한다.3. 나보다 작은 사람보다 작은 사람은 나보다 작다. 반대도 마찬가지4. 해서 나보다 작은 사람과 그사람보다 큰 사람인 경우에 그 사람과의 관계를 저장한다.소스코드package online.judge.baekjoon;import java.io.BufferedReader;import java.io.IOException;import ja..
문제풀이문제 해석1. 공주를 위해 공주가 원하는 기간에 어떤 꽃이든 피어있는 정원을 만들고 싶다. 2. 3월 1일부터 11월 30일 까지는 매일 꽃이 피어있도록 한다. 3. 조건에 맞는 최소의 꽃의 개수를 출력하면 된다. 4. 첫째 줄에 꽃의 개수 N, 다음 줄부터 각 꽃의 피는 날짜와 지는 날짜가 주어진다. 5. 꽃의 개수가 최소가 되는 경우를 출력하라문제풀이1. 문제를 읽으면 그때그때 최적의 해를 찾아 해를 찾는 그리디 알고리즘을 떠올릴 수 있다.2. 개화시기, 낙화시기를 오름차순, 내림차순으로 정렬해서 결정한다.3. 시기가 적합한 꽃들을 찾아간다.4. 꽃 찾지 못하면 0을 출력한다.소스코드package online.judge.baekjoon;import java.io.BufferedReader;im..
문제풀이문제 해석1. N개의 지점이 있고 N개의 지점사이에는 M개의 도로와 W개의 웜홀이 있다.2. M개의 도로를 지나갈 때는 시간이 소요(+)되고 W 웜홀을 통과할 때는 시간 되감기(-)가 된다.3. 시간여행을 해서 출발 위치로 도달하였을 때 시간이 되돌아가 있는 경우가 있는지 확인해라4. 첫째 줄에 테스트 케이스가 주어진다. 두번째 줄에는 N, M, W 개수가 주어지고 밑으로 M의 정보 W의 정보가 주어진다.5. 테스트 케이스마다 시간이 되돌아가는 경우가 있는지 확인하여 YES or NO를 출력해라문제 풀이1. 지점과 도로가 주어지고 음의 가중치를 갖는 것(웜홀)도 있기 때문에 벨만포드 알고리즘을 사용해야겠다고 생각했다.2. 출발 지점과 도착 지점 그리고 가중치를 담기 위해 graph를 `List`..