본문 바로가기

프로그래머스4

[프로그래머스] 리코쳇 로봇 - Java BFS로 분 프로그래머스 문제이다. import java.util.*; // 최소 몇 번 이동인지 이므로 BFS // 장애물이나 벽을 만날 때 까지 이동이 1번의 이동 // x, y 좌표를 표기하기 위한 Node 클래스 필요 // BFS를 위해 사용할 Queue 필요 class Solution { static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int N; static int M; public int solution(String[] board) { int answer = 0; int start_x = -1, start_y = -1; N = board.length; M = board[0].length(); for(int i .. 2024. 3. 6.
[프로그래머스] 요격 시스템 스케줄링과 비슷한 레벨 2의 요격 시스템 문제를 풀어보았다. 스케줄링 문제는 개념은 알고있었는데 관련 문제는 처음 풀어보는 것 같다. import java.util.*; // A나라의 미사일은 X축에 평행하게 좌표로 주어짐 // B나라에서 최소한의 미사일을 사용하여 요격 // 시간복잡도 O(N^2) 2024. 3. 4.
[프로그래머스] 타겟 넘버 DFS/BFS 감을 되찾고자 레벨 2의 타겟 넘버 문제를 풀었다. 나는 DFS를 선택해 문제를 풀었다. // numbers 배열에 숫자들의 목록이 들어있음 // 배열의 숫자들을 각 단계에서 더하거나 빼서 // target이 나올 수 있는 경우를 카운트해서 반환. // DFS/BFS 사용하는 것이 좋아보임 class Solution { static int result = 0; public int solution(int[] numbers, int target) { return dfs(numbers, target, 0, 0); } // numbers: 숫자 배열 // target: 목표값 // idx: 숫자 배열의 인덱스 // compute: 계산된 값 public int dfs(int[] numbers, i.. 2024. 3. 4.
[프로그래머스] 미로 탈출 명령어 2023 KAKAO BLIND RECRUITMENT 미로 탈출 명령어 문제를 풀어보았다. BFS를 사용하여 접근하였고 사전 순서대로 이동하는 것은 정렬대신, 알파벳 사전 우선순위를 토대로 해당 방향으로 먼저 움직이게 작성하였다. 맨 처음엔 시간 초과가 발생하여 bfs() 메소드 내의 반복문에 적절하게 시간 단축 로직을 추가 작성하였다. BFS import java.util.LinkedList; import java.util.Queue; /** * n x m (x, y) -k-> (r, c) */ class Solution { static int n; static int m; static int x; static int y; static int r; static int c; static int k; sta.. 2024. 1. 27.