본문 바로가기

Algorithm/Programmers93

[PRGRMS]81302번: 거리두기 확인하기 문제: https://programmers.co.kr/learn/courses/30/lessons/81302 시뮬레이션 문제입니다. N제한이 작으므로 완전 탐색을 통해 해결합니다. BFS를 사용하여 지원자들간의 거리를 구하였고 맨헤튼 거리가 2이하인 경우만 표시해주면 됩니다. 코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%EA%B1%B0%EB%A6%AC%EB%91%90%EA%B8%B0%20%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0.java 2022. 3. 3.
[2020 카카오 기출] 기둥과 보 설치(JAVA) 문제: https://programmers.co.kr/learn/courses/30/lessons/60061 sooooooyn님의 솔루션으로 해결하였습니다. (https://sooooooyn.tistory.com/32) 기둥과 보를 설치/삭제 시에 어떻게 따져주는 지에 따라 난이도가 달라지는 문제입니다. 서치했던 솔루션 중에 굉장히 심플한 솔루션이라고 생각합니다. 간단하게 두 가지로 모든 경우를 처리합니다. 1. kidoong[N][N], bo[N][N] 으로 기둥과 보를 표현 2. 삭제 입력이 들어오면 일단 삭제 시켜본 후에, 삭제 시킨 좌표와 연관이 있는 기둥이나 보가 설치 불가능하다고 판정이 나는 경우 롤백시킵니다. 코드: https://github.com/cotchan/algorithm/blob/.. 2021. 7. 1.
[2020 카카오 기출] 블록 이동하기(JAVA) https://programmers.co.kr/learn/courses/30/lessons/60063 시뮬레이션 문제입니다. 크게 두 가지가 중요합니다. 1. 로봇의 상태를 나타내는 법 로봇의 상태는 현재좌표(Y,X) + 바라보고 있는 방향(Direction)으로 나타낼 수 있습니다. 두 칸을 각 각 HEAD, TAIL이라고 하고 HEAD 기준으로 바라보는 방향으로 TAIL 위치를 구할 수 있습니다. //int값 X의 의미: X초에 로봇이 (y,x) 좌표에서 dir 방향으로 있었음을 의미 int robotState[DIR][N][N]; 2. 매 초 이동하는방법 매 초마다 로봇이 이동할 수 있는 방법은 8가지입니다. case1. 회전하지 않고 주어진 방향에서 좌우상하로 4방향 이동하는 경우 - 4가지 ca.. 2021. 6. 20.
[2021 카카오 기출] 카드 짝 맞추기(JAVA) https://programmers.co.kr/learn/courses/30/lessons/72415 풀이는 바킹독님의 해설을 참고했습니다. (https://www.youtube.com/watch?v=FX9n1PFv2K4&t=2851s) 풀이는 크게 3가지 파트로 나눠집니다. 1. 6개 종류의 카드 중 어떤 카드부터 짝을 맞출 것인지 - 시간복잡도: O(6!) 2. 한 종류의 카드는 2장이 있는데, 두 장 중 어떤 카드부터 탐색할 것인지 - 시간복잡도: O(2^6) 3. 실제 탐색하는 BFS - 시간복잡도: (6 * O(4^2)) 위 3개의 조합으로 O(1*2*3)을 한 게 브루트포스로 해결한 시간복잡도입니다. N제한이 크지않으므로 C++, JAVA의 경우는 브루트포스로 해결 가능합니다. 코드: http.. 2021. 6. 20.