본문 바로가기

분류 전체보기153

[백준] 16236번: 아기 상어 (Java) 1. 문제설명N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 한 칸에는 물고기가 최대 1마리 존재한다.가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있으며, 자신의 크기보다 작은 물고기만 먹을 수 있다. 크기가 같은 물고기는 먹을 수 없지만, 지나갈 수 있다.아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다.더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 상어에게 도움을 요청한다.먹을 수 있는 물고기가 1마리라면, 그 물고기를 먹으러 간다.먹을 수 있는 물고기가 1마리보다 많다면, 거리가 가장 가까운 물고기를 먹으러 .. 2024. 9. 18.
[백준] 1138번: 한 줄로 서기 (Java) 1. 문제설명N명의 사람들은 한 줄로 서고, 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 구한다.시간 제한: 2초메모리 제한: 128MB 2. 접근 방식줄을 나타내는 배열을 생성한다.키 작은 사람부터 차례로:자신보다 키 큰 사람이 몇 명 있는지 입력받음그 숫자만큼 빈자리 확보그 자리에 해당하는 사람을 배치배열 순서대로 출력한다. 3. 최종 코드import java.io.*;import java.util.StringTokenizer;public class Main public static void main(String[] args) throws IOException { BufferedReader br.. 2024. 9. 18.
[백준] 21610번: 마법사 상어와 비바라기 (Java) 1. 문제설명NxN 크기의 격자가 있고, 각 칸에는 바구니가 하나 있다. 이 바구니에 저장할 수 있는 물의 양에는 제한이 없다. A[r][c]는 {r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미한다.격자의 범위는 (1, 1) (N, N) 이다. 1번 행과 N번 행을 연결하고, 1번 열과 N번 열을 연결한다.비바라기를 시전하면 (N, 1), (N, 2), (N-1, 1), (N-1, 2) 에 비구름이 생긴다. 구름에 이동을 M번 명령한다. i번째 이동 명령은 방향 $d_i$과 거리 $s_i$로 이루어져 있다. 방향은 인접한 8방향이 있으며, 8개의 정수로 표현한다.M번의 이동이 모두 끝난 후 바구니에 들어있는 물의 양의 합을 구한다.모든 구름이 di 방향으로 si칸 이동한다.각 구름에서 비가 내려.. 2024. 9. 18.
[백준] 8911번: 거북이 (Java) 1. 문제설명2차원 평면에서 거북이 로봇에게 내릴 수 있는 명령은 F(한 눈금 앞으로), B(한 눈금 뒤로), L(왼쪽으로 90도 화전, 방향만 바꿈), R(오른쪽으로 90도 회전, 방향만 바꿈)이 있다. 거북이가 지나간 영역을 모두 포함할 수 있는 가장 작은 직사각형의 넓이를 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식방향 배열 `dx`, `dy` 를 사용한다. (북동남서 순서)입력에 따른 좌표 게산과 방향 전환을 통해 거북이가 이동하는 영역의 최대/최소 좌표를 구한다.입력에 따른 좌표 계산F, B ⇒ x, y 좌표를 현재 방향에 따라 좌표 계산입력에 따른 방향 전환L ⇒ 방향 인덱스 : 3→2, 2→1, 1→0, 0→3 ⇒ `(g + 3) % 4`R ⇒ 방향 인덱스: 0→.. 2024. 9. 18.
[백준] 15685번: 드래곤 커브 (Java) 1. 문제설명드래곤 커브는 시작 점(x, y)에서 주어진 방향으로 직선을 그린 후, 특정 규칙에 따라 회전하며 곡선을 만들어낸다. 방향(d)과 세대(g)가 주어지면, 해당 드래곤 커브를 그린 후, 그리는 과정에서 만들어지는 1x1 정사각형이 몇 개인지 구하는 문제이다.(0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10)드래곤 커브의 규칙은 주어진 방향으로 1세대 드래곤 커브를 그리고, 세대별로 현재까지 그린 선분들을 뒤집은 후 90도로 회전시킨 뒤, 이를 이어서 그리는 방식이다.시간 제한: 1초메모리 제한: 512MB 2. 접근 방식참고: https://dublin-java.tistory.com/34방향 전환 (90도)0 → 1, 1 → 2, 2 → 3, 3 → 0위를 식으로 전환하면 .. 2024. 9. 17.
[백준] 5212번: 지구 온난화 (Java) 1. 문제설명지도는 R*C 크기의 그리드로 나타낼 수 있고, ‘X’는 땅을 나타내고, ‘.’는 바다를 나타낸다. 50년이 지나면, 인접한 세 칸 또는 네 칸에 바다가 있는 땅은 모두 잠겨버린다. 주어진 현재 지도에서 50년 후의 지도를 구하는 문제이다.시간 제한: 1초메모리 제한: 128MB 2. 접근 방식지도에서 땅인 경우 BFS를 사용해 인근의 바다 개수를 구한다.땅의 인근에 바다가 3개 이상이면 해당 땅의 위치를 저장한다.땅이 지도의 맨 위 또는 맨 아래에 있으면 바다의 개수를 1개 더 더한다.땅이 지도의 맨 왼쪽, 또는 맨 오른쪽에 있으면 바다의 개수를 1개 더 더한다.저장한 땅의 위치를 바다로 변경한다.지도 출력 시 필요한 범위를 설정한다.설정한 범위로 지도를 출력한다. 3. 최종 코드impor.. 2024. 9. 17.
[백준] 1941번: 소문난 칠공주 (Java) 1. 문제설명총 25명의 여학생들이 5x5의 정사각형 격자 형태로 자리가 배치되어 있다. S(이다솜파)와 Y(임도연파)를 값으로 갖는 5*5 행렬이 주어졌을 때 아래 규칙을 만족하는 모든 경우의 수를 구한다.7명의 학생들로 구성되어야 하고, 7명의 자리는 서로 가로나 세로로 인접해야 한다.7명의 학생 중 S 학생이 적어도 4명 이상은 반드시 포함되어야 한다.시간 제한: 2초메모리 제한: 256MB 2. 접근 방식25자리 중 7자리를 선택하는데, ‘S’ 학생이 4명 이상 포함되도록 한다. (조합, 백트래킹)BFS를 사용해 해당 7개의 자리가 모두 상하좌우로 연결되어 있는지 확인한다.선택된 7명의 자리가 서로 인접한디 BFS로 확인한다. 인접할 경우 count 증가시킨다. 3. 틀린 이유2차원 배열로 백트래.. 2024. 9. 13.
반응형