목록알고리즘 (31)
delpho
Think 1. 처음에는 되게 단순하게 풀었음. 강의실을 다루기위해 연결리스트를 사용하고, 해당 리스트를 탐색하면서 강의의 시작보다 강의실의 종료시간이 빠르면 갱신하는 식으로. 2. 하지만 틀렸고, 문제를 다시 읽어보면서 반례를 찾아봄 3. 1번처럼 풀면, 최적화되지 않음 (강의가 5-6이고, 강의실에 (3-5, 2-4)로 되어있는 경우일때, 두번째 강의실에 갱신해야 더 최적일 수도 있음) 4. input과 강의실을 관리하는 자료구조들을 정렬해야 될 필요성을 느끼고 우선순위 큐를 활용하였음. 5. (참고) 강의실을 관리하는 우선순위 큐는 끝나는 시간만 저장해도 된다. 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java...
Think 1. Map을 활용해서 문제 푸는 아이디어는 어렵지 않았음. 2. 종류별 개수로 경우의 수를 도출하는 계산식을 잘 고려해야함 ( 종류별 개수 + 1을 모두 곱한 후 (-1) 해주어야함 ) 종류별 개수 + 1을 하는 이유는, 옷을 안 입는 경우도 있기 때문 마지막에 -1을 하는 이유는, 옷을 모두 안 입는 경우는 없기 때문 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int N, M, map[][], white, blue; static Map m = new HashMap(); sta..
Think 1. BFS인데 약간의 조건을 고려해야하는 문제 2. 연합이 있는 경우 전체 BFS를 한번 더 진행해야해서 이를 파악하기 위한 isPossibleContinue을 잘 활용해야 했음 (While문 탈출 조건으로 활용해야해서) 3. 최적화 고려하면 더 좋은 문제 (ex. 연합 있는 경우만 BFS 진행) 제출코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class test { static int N, L, R, map[][]; static boolean isVisited[][], isPossibleContinue; static ..
Think 1. 답을 구하는 방법을 고민하다가 나온 결론은, (O의 위치까지 가는 경로의 수) * ([N-1][M-1]의 위치까지 가는 경로의 수) (= 조합) 2. 경로의 수를 구하는 방법을 고민했는데, https://blog.naver.com/occidere/221012382627 의 내용처럼 구하는 방법을 떠올리게 되었음 3. 따라서, previousK(), nextK()로 함수를 나눈 뒤, 경우의 수 두 개를 구한 후 답을 도출함. 4. K = 0일때 혹은 K % M = 0 일때의 경우들에서 예외 처리를 잘 해주어야했음. 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..