반응형 정답24 백준 2206번 - 벽 부수고 이동하기 (C++) 문제 해결 방법 일반적이지 않은 최단거리 문제라 BFS를 이용하여 구현하였으며, visit를 3차원 배열로 선언하여서 [좌표][좌표][벽을 뚫고 여기까지 도착했는가?]를 표시하였다. [][][1] 이면 해당 좌표까지 도착하는 길에 벽을 뚫고 온 것이고 [][][0]이라면 해당 좌표까지 오는 길에 벽을 뚫고 오지 않은 것. 또한, queue에 좌표뿐 아니라 해당 경로에서 벽을 뚫고 왔는지에 대한 변수 또한 필요하여 총 3개의 변수를 이용하여 queue를 구성하였다. 아쉬웠던 점 없음 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 .. 2021. 7. 30. 백준 2580번 - 스도쿠 (C++) 문제 해결 방법 3차원배열[3x3으로 나눴을때의 구역][구역 내 세로][구역 내 가로]을 이용하여서 스도쿠 판을 나타내었고, DFS/백트래킹을 통하여 해결하였다. 이 문제에서 사용된 백트래킹은, 구역+가로+세로의 숫자의 종류가 9가지라면(그 칸에 넣을 숫자가 없다면), 재귀를 되돌아가며 기존에 변경한 값을 모두 0으로 되돌려준다. 아쉬웠던 점 3차원배열로 잘 짠거같은데 벡터때문인지 근본적인 무언가 때문인지 약 300ms로, 시간이 예상보다 느리게 나오더라..(빠를줄 알았는데..) 사실 pop만 있고 push는 없는 구조라서 배열을 사용하고 매개변수로 index를 넘겨주면서 충분히 할 수 있었는데 아쉽다. 애지간하면 배열보다 벡터를 사용하는 습관을 들였는데 문제풀이 할 때에는 별로 좋은 습관은 아닌 것 같.. 2021. 7. 30. 백준 9944번 - NxM보드 완주하기 (C++) 문제 해결 방법 입력 시, *의 갯수를 카운팅하고, 내부에서 DFS를 통하여 구현하였다. 내부 작동 중 .을 *로 바꾸는 횟수를 카운팅하여 최종*의 갯수가 NxM의 갯수가 되면 리턴하였다. 또한, 백트래킹을 이용하여 롤백을 구현하였으며, 외 특별한점은 없다. 아쉬웠던 점 없음 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 #include .. 2021. 7. 30. 백준 1694 - FEN 체스 (C++) 문제 해결 방법 입력값을 기준으로 먼저 체스판의 배치를 배열에 넣어준 뒤, 체스판을 순회하며 해당 자리에 기물이 있다면 그 기물이 갈 수 있는 모든 경로의 좌표를 체크한다. 이를 끝까지 반복하고, 체크되지 않은 좌표의 갯수를 더해 출력한다. 아쉬웠던 점 상하좌우/대각/나이트 이동 코드가 한 45줄 가량 나왔는데 더 줄일 수 있을 것 같다... 더럽다. 또한, 체스판의 크기만큼 반복을 돌리는데 입력할때, 입력을 기반으로 경로 파악할때, 빈칸 체크할때 총 세번이나 돌아간다. 쓰면서 생각났는데 O를 X로 바꿀때(경로 체크할때) + 체스 기물 갯수 하면 마지막에 체크되지 않은 좌표를 찾기위해 순회하는 일은 없어도 됐다... 의미없는 반복이 한번 더 들어갔다. 코드 1 2 3 4 5 6 7 8 9 10 11 12.. 2021. 7. 15. 이전 1 2 3 4 5 6 다음 반응형