목록코딩테스트준비 (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. 모임에서 회장선출을 하려고 하는데 조건이 있다. 2. 아직 서로 모르는 사이가 존재하는데 다리를 건너면 모두가 알 수 있다. 3. 가까운 정도에 따라 점수가 나뉘게 되는데 기준은 아래와 같다. 4. 모두와 친구라면 1점, 한 다리 건너야 하는 친구가 있다면 2점.... 5. 점수가 가장 작은 사람이 회장 후보가 된다. 6. 입력으로 회원의 수와 친구관계가 주어진다. 7. 출력으로 후보의 점수와 몇명인지, 누구누구 인지를 내보낸다.문제 풀이1. 회원의 수가 50이하고 다리를 건너서 안다는 조건 등이 있어 플로이드-워셜을 사용한다. 2. 알고리즘 안에 조건은 이어지는데 원래 값이 없다면 이어지는 값을 그대로 넣고 3. 아니라면 있는 값과 이어지는 값을 더해서 넣는다. 4. 회장 후보들을..
문제풀이문제 해석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에서 바로 넘어오거나 홀 수..