본문 바로가기

문제풀이122

[JAVA] BOJ 백준 16930번 - 달리기 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/16930 16930번: 달리기 진영이는 다이어트를 위해 N×M 크기의 체육관을 달리려고 한다. 체육관은 1×1 크기의 칸으로 나누어져 있고, 칸은 빈 칸 또는 벽이다. x행 y열에 있는 칸은 (x, y)로 나타낸다. 매 초마다 진영이는 www.acmicpc.net 2. 내가 푼 방법 시간 초과가 관건인 BFS 문제이다. 이동할 수 있는 체육관의 위치를 큐에 담을 때 중복을 제거하는 것이 중요하다. 같은 방향으로 1 ~ K 만큼을 이동할 수 있다는 것은, 달리는 중간에 방향을 꺾을 수 없다는 의미이다. 따라서 벽에 부딪히거나 범위를 벗어나면 break; 문을 통해 K번의 for문을 빠져나.. 2024. 2. 13.
[JAVA] BOJ 백준 2186번 - 문자판 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/2186 2186번: 문자판 첫째 줄에 N(1 ≤ N ≤ 100), M(1 ≤ M ≤ 100), K(1 ≤ K ≤ 5)가 주어진다. 다음 N개의 줄에는 M개의 알파벳 대문자가 주어지는데, 이는 N×M 크기의 문자판을 나타낸다. 다음 줄에는 1자 이상 80자 이하의 www.acmicpc.net 2. 내가 푼 방법 DP 알고리즘을 이용하며, 만들 수 있는 단어의 개수를 저장해둠으로써 가지치기할 수 있다. 문자열 인덱스 위치에 따라 만들 수 있는 단어를 카운팅하기 위해 dp를 3차원 Integer 배열로 선언했다. 우선 initDP 함수에서 문자열의 0번 인덱스와 같은 문자일 때 1로 초기화하.. 2024. 2. 13.
[JAVA] BOJ 백준 23288번 - 주사위 굴리기 2 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 2. 내가 푼 방법 실수만 안 하면 금방 풀리는 빡구현 문제이다. 우선 서/북/동/남 순서로 방향을 설정했는데, 시계 방향 회전은 (dir + 1) % 4, 반시계 방향 회전은 (dir + 3) % 4, 반대 방향은 (dir + 2) % 4를 작성하여 코드를 간결하게 해주었다. 주사위를 굴리는 기능인 roll() 함수,.. 2024. 2. 5.
[JAVA] BOJ 백준 16964번 - DFS 스페셜 저지 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/16964 16964번: DFS 스페셜 저지 첫째 줄에 정점의 수 N(2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에는 트리의 간선 정보가 주어진다. 마지막 줄에는 DFS 방문 순서가 주어진다. DFS 방문 순서는 항상 N개의 정수로 이루 www.acmicpc.net 2. 내가 푼 방법 이 문제는 제목 그대로 DFS 알고리즘을 구현해 가능한 방문 순서인지 확인하면 된다. 중요한 부분은 방문한 적 없는 노드인지, 자식 노드인지(=갈 수 있는 경로인지)를 확인함으로써 nextNode가 현재 노드에서 갈 수 있는 다음 노드인지 확인하는 부분이다. 자식 노드인지 확인하기 .. 2024. 1. 31.
[JAVA] BOJ 백준 16437번 - 양 구출 작전 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/16437 16437번: 양 구출 작전 2, 3, 5번에 사는 모든 양들은 1번 섬으로 갈 수 있지만 7번 섬에 사는 양들은 1번 섬으로 가기 위하여 6번 섬을 거쳐야 하는데 6번 섬에 사는 늑대들의 수가 7번 섬에 사는 양들의 수보다 많으므로 www.acmicpc.net 2. 내가 푼 방법 위상정렬 알고리즘을 생각해내면 금방 해결할 수 있는 문제이다. 위상정렬은 그래프 상에서 순서가 존재할 때, 먼저 탐색되어야 하는 노드가 존재한다면 이전 노드들을 모두 탐색한 후에 현재 노드를 지날 수 있도록 하는 알고리즘이다. 따라서 자식 노드를 먼저 탐색해야 하는 노드로 설정하고, 자식 노드에서 현.. 2024. 1. 31.
[JAVA] BOJ 백준 1938번 - 통나무 옮기기 목차 문제 내가 푼 방법 자바 코드 결과 및 회고 1. 문제 https://www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4 ≤ N ≤ 50) 주어진다. 이어서 그 지형의 정보가 0, 1, B, E로 이루어진 문자열로 주어진다. 한 줄에 입력되는 문자열의 길이는 N이며 입력 문 www.acmicpc.net 2. 내가 푼 방법 DFS 알고리즘을 이용했고, 전에 방문했을 때보다 더 적은 동작 횟수로 방문할 경우에만 재탐색할 수 있도록 가지치기했다. 방문한 경로임을 확인하기 위해 통나무의 중심(가운데 값)을 기준으로 동작 횟수를 저장했다. 또한, 현재 위치의 통나무 모양이 가로, 세로인지에 따라 달라진다. 먼저 회전 동작.. 2024. 1. 24.