전체 글199 [프로그래머스] 조이스틱 - Java https://school.programmers.co.kr/learn/courses/30/lessons/42860?language=java# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr ⭐️ 중요 포인트1. 알파벳 'N'을 기점으로 절댓값의 offset 기점이 바뀌므로 A to Z까지의 각 최소 오프셋을 구해 상하로 움직이는 조이스틱의 전체 횟수를 구한다.2. 다음 세 경우에 대한 좌우 조이스틱 이동 횟수를 구한다.이 때, A가 다수 겹치는 구간의 경우 스킵할 수 있음(반대쪽으로 돌아가기). 그 이유는 기본 값이 A로 셋팅되어있기 때문에 굳이 A가 여러 개 반복되는 구간을 지나갈 필요가 없다.ex) "AAAA.. 2025. 12. 17. [백준] 20055. 컨베이어 벨트 위의 로봇 - Java https://www.acmicpc.net/problem/20055 ⭐️ 중요 포인트1. 각 기능을 함수 별로 나누어 푸는게 중요했다. 이 문제는 단순 구현 및 시뮬레이션이기때문에 구현을 얼마나 명확하게 하는가가 중요하여 기능별로 함수를 정의했다.2. 로봇이 움직인 자리는 false, 로봇이 이동한 자리는 true로 변경하는 것을 잘못 구현하여 처음에는 틀렸었다.import java.util.*;import java.io.*;public class P20055 { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int n; static int k; static int[.. 2025. 10. 29. [백준] 12919. A와 B 2 - Java https://www.acmicpc.net/problem/12919 ⭐️ 중요 포인트1. 처음에는 s -> t를 향해 정답을 찾으려고 했다. 하지만 시간복잡도를 계산해보니 대충 계산해봐도 O(2^50)... 절대 이 방식대로 풀 수 없다고 생각했다. 그래서 경우의 수를 계속 늘리며 찾는 방식보단 t -> s로 정답인 경로를 중간중간 확인하며 A와 B를 추가하는 경우의 수를 거꾸로 탐색하는 방법으로 문제를 해결하려 했다.2. 이후 while문을 통해 문제를 해결하고자 했다. 그러나 여기서 문제가 발생하는 지점은 A와 B 모두 선택할 수 있을 가능성이 있을 때이다.예를 들면 "BA"인 경우 1. 'B'에서 'A'를 추가해 "BA" 경우 2. 'A'에서 'B'를 추가해 "AB"가 되고, 이를 뒤집어.. 2025. 10. 28. [백준] 15684. 사다리 조작 - Java https://www.acmicpc.net/problem/15684 ⭐️ 중요 포인트- 추후 작성 예정import java.util.*;import java.io.*;public class P15684 { static BufferedReader br; static BufferedWriter bw; static StringTokenizer st; static int N; static int M; static int H; static int[][] graph; static int answer; static int cnt; static boolean[][] isVisited; static void init() throws IOException { .. 2025. 10. 27. [백준] 2206. 벽 부수고 이동하기 - Java https://www.acmicpc.net/problem/2206 ⭐️ 중요 포인트1. 처음에는 각 벽을 하나씩 부수고 복원하며 각 테스트케이스를 BFS돌렸다. 이렇게 되면 1000 * 1000 * 1000 = 10억.대략 10초 정도 걸린다. 이렇게 하면 시간 제한(2초) 내에 문제를 해결할 수 없다.2. 따라서 isVisited와 Node에 이전에 벽을 부쉈는지, 부수지 않았는지에 대한 값을 저장해가며 한 BFS 내부에서 여러 분기를 만들어 블록을 부순적이 있는지 없는지에 대한 여부를 저장해가며 BFS를 돈다.이렇게 하면 하나의 BFS 내부에서는 노드별로 2개의 추가적인 연산이 생기지만 2 * 1000 * 1000 = 200만.시간 내에 해결 가능하다. import java.util.*;impor.. 2025. 8. 25. [백준] 2573. 빙산 - Java https://www.acmicpc.net/problem/2573이 문제는 BFS와 DFS를 자유롭게 사용할 줄 알아야 풀 수 있는 문제였다. 필자는 어떻게 BFS를 한 스텝씩 실행하며 DFS를 돌아 빙산이 쪼개지는 조건을 만족할 수 있는지 체크하는데 어려움을 겪었다. 아래 2번에 작성해놨지만 Queue에 다음 노드를 넣지 않음으로써 한 페이즈씩 BFS를 수행할 수 있었다. ⭐️ 중요 포인트1. 빙산의 높이가 1이상인 노드를 입력받을 때, 리스트 형태로 저장한다.2. BFS에서 (1)에서 저장한 리스트를 BFS 시작시 Queue에 넣고 돌린다. 이 때, 원래 BFS는 dx, dy를 돌며 nextX, nextY가 조건에 맞으면 Queue에 다음 노드를 저장하지만, 여기에서는 빙하를 높이 1씩 감소하며 빙하.. 2025. 8. 21. 이전 1 2 3 4 ··· 34 다음