[백준] 로봇 청소기 14503번 - (Java)
14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 기본적으로 DFS를 통해 해결했다. 회전 방향과 종료 시점을 잘 짚어주는 것이 중요했다. 회전방향 구하기 1) 회전 방향 : 이동은 반시계 방향으로 90도 돌며 진행한다. // 상, 우, 하, 좌 static int[] dirX = {0, 1, 0, -1}; static int[] dirY = {-1, 0, 1, 0}; 이동할 방향을 제시된 번호에 맞게 상(0), 우(1), 하(2), 좌(3)으로 변화량을 설정했다..
2023. 8. 25.
[프로그래머스] 2020 카카오 인턴십 경주로 건설
2020 카카오 인턴십 [카카오 인턴] 경주로 건설 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐색 기법 : DFS 목적지 도달까지 경로비용을 계산하며 모든 경로를 탐색한다. 도착지부터, 목적지까지 오른쪽, 아래, 왼쪽, 위 순서로 DFS DFS 전달내용 - 현재 보드 탐색 상황 - 현재 x, y 좌표 - 이전 이동 방향 - 누적 비용 #define R 0 #define D 1 #define L 2 #define U 3 // 현재 맵, 현재 x좌표, 현재 y좌표, 이전 진행 방향, 누적 비용 int dfs(vector board, int x, int ..
2023. 3. 30.
[프로그래머스] 키패드 누르기
프로그래머스의 2020카카오인턴십 키패드 누르기를 풀어보았다. 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 원래는 시간 맞추고 다 풀고 싶었는데 3시간 동안 2개 풀었다ㅠㅠ 풀이법 1. 번호마다 각 위치를 저장한다. 2. 왼손과 오른손만을 쓰는 경우를 체크한다. 3. 중앙의 숫자를 누르는 경우를 체크한다. - 왼손/오른손 중 누가 더 가까운가? - 둘의 거리가 같다면 왼손/오른손 잡이 중 무엇인가..
2022. 4. 18.