목록99클럽 (63)
원하는 것은 뭐든지
문제풀이문제 해석1. N개의 지점이 있고 N개의 지점사이에는 M개의 도로와 W개의 웜홀이 있다.2. M개의 도로를 지나갈 때는 시간이 소요(+)되고 W 웜홀을 통과할 때는 시간 되감기(-)가 된다.3. 시간여행을 해서 출발 위치로 도달하였을 때 시간이 되돌아가 있는 경우가 있는지 확인해라4. 첫째 줄에 테스트 케이스가 주어진다. 두번째 줄에는 N, M, W 개수가 주어지고 밑으로 M의 정보 W의 정보가 주어진다.5. 테스트 케이스마다 시간이 되돌아가는 경우가 있는지 확인하여 YES or NO를 출력해라문제 풀이1. 지점과 도로가 주어지고 음의 가중치를 갖는 것(웜홀)도 있기 때문에 벨만포드 알고리즘을 사용해야겠다고 생각했다.2. 출발 지점과 도착 지점 그리고 가중치를 담기 위해 graph를 `List`..
문제풀이문제 해석1. 케빈 베이컨의 6단계 법칙은 "지구에 있는 모든 사람들은 6단계 이내에서 서로 아는 사람으로 연결될 수 있다."라는 법칙이다.2. 케빈 베이컨 게임은 임의의 두사람이 최소 몇 단계 만에 이어질 수 있는지 계산하는 게임이다.3. 사람의 번호는 1부터 N까지이고, 승리자는 가장 작은 단계의 합을 가지고 있는 사람이다.4. 첫째 줄에 게임유저의 수 N, 관계의 수 M 이 주어진다.5. 둘째 줄 부터 관계 M개가 주어진다.6. 게임의 승리자를 찾아라, 같은 사람이 여려 명일 경우 숫자가 작은 사람이 이긴다. 문제 풀이1. 유저의 수가 100이하이고 모든 유저와의 관계를 나타내야 하므로 플로이드-워셜 알고리즘을 사용2. 플로이드-워셜의 알고리즘의 내부 조건으로는 x(출발),y(중간다리),z(..
문제풀이문제 해석1. 가중치가 없는 그래프가 주어진다.2. 행렬로 주어지는데 i, j좌표는 i가 j로 가는 간선이 있다는 뜻이다.3. i에서 출발해서 j까지 닿을 수 있다면 1로 아니면 0으로 표시한다풀이 방법1. 정점이 100개로 작다.2. 플로이드 - 워셜 알고리즘을 적용한다.코드package online.judge.baekjoon;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;/** * 경로 찾기 * 실버 1 * 문제해석 * 0~n까지 값이 특정 인덱스에 닿을 수 있는지 알아보는 문제 * * 문제 풀이 * 플로이드-워셜을 사용해..
문제풀이너무너무 어렵다..처음에 무조건 0에 방문하는데 그게 첫 번째 방문이다.만약 방문이 홀수일 때 다음 날 nextVisit[i]를 방문한다.짝수 일 때 다음 날 i+1을 방문한다.여기까지가 내가 생각한 부분이고 규칙을 찾으려고 하다가 실패해서 결국 다른 사람들의 풀이를 봤다..근데 이해가 잘 안된다... 다른 사람의 풀이 참고class Solution { public int firstDayBeenInAllRooms(int[] nextVisit) { long mod = 1_000_000_007l; int[] dp = new int[nextVisit.length]; for(int i=1;i 다음으로 가는 경우에는 i-1에서 바로 넘어오거나 홀 수..