heap->priority_queue를 사용하여 풀이한다. https://programmers.co.kr/learn/courses/30/lessons/42626
https://programmers.co.kr/learn/courses/30/lessons/81302 조건 접근 'P'에서 1만큼 위,아래,왼,오로 이동하였을 경우 'P'이면 그 강의실은 거리두기 위반 'P'에서 1만큼 위,아래,왼,오로 이동하였을 경우 'O'이고, 다시 'O'인 위치에서 1만큼 위,아래,왼,오로 이동하였을 경우 'P'인 경우 맨해튼거리가 2 이하이므로 강의실은 거리두기 위반 풀고나니 많이 지저분하다.
참고 : http://www.soen.kr/lecture/ccpp/cpp4/39-3-3.htm
10진수로 다시 변환하기 위해 pow함수도 쓰고.. 아둥바둥 했으나.. 매우 간단한 풀이가 있었다.. 머리 좀 잘쓰자.. >참고한 풀이
문제 풀이 출발점이 따로 존재하지 않아서 BFS보다 DFS가 더 적합하다고 생각하여 DFS로 접근하였다. -> 다른 블로그보니 BFS로 푼 경우가 꽤 된다. 한칸에 지렁이가 살고 있으면 왼/오/위/아래로 인접한 다른 배추로 이동할 수 있어 지렁이가 필요없다. 배추의 위치는 x : 0<=x<M ,y : 0<=y<N 이 주어진다. 을 가진다. 반면 unordered_map은 Hash Table을 사용해 키의 순서를 유지하지 않기 때문 탐색속도에 O(1)이상의 시간복잡도를 가진다. 위의 문제는 정렬을 하지 않기 때문 map 보다 unordered_map의 사용이 더욱 적합하다.
// 못푼 문제 -> 정리해서 내일 다시 풀어보기! 다른 블로그의 풀이를 보니 greedy algorithm 을 사용하여 풀었다. 큰 수(5)를 n번 만큼 이용하여 봉투에 채우는 방법이 봉투를 가장 적게 쓰는 방법니다. 큰 수(5)로 채워지지 않으면 3만큼을 봉투에 담는다. 그리고 난 후 다시 5로 나누어 나머지가 0 인지 확인한다. 이를 반복하여 최적의 해를 찾는다.
풀릴듯 말듯 안풀린 문제 ㅠㅗㅠ 나 수학 정말 못하나봐.. 차근차근 생각해보자. 예제 1을 생각했을때, 하루에 [2만큼 올라가고 정상에 도달하지 못했을 경우, 1만큼 내려가고] 를 반복하며 5에 도달하거나 5보다 더 크게 갔을때의 날짜를 출력하면 된다. -> 2n - 1(n-1) >= 5 -> n = 4 가 정답이 된다. a*n - b(n-1) >= v 인 수식을 계산하면 n >= (v-b)/(a-b)를 출력하면 된다.