본문 바로가기

분류 전체보기177

[백준] 1743번: 음식물 피하기 (Java) 1. 문제설명음식물이 통로 중간 중간에 떨어져 있고, 음식물은 근처(상하좌우)에 있는 것끼리 뭉치게 되어 큰 음식물 쓰레기가 된다. 떨어진 음식물 중에 제일 큰 음식물의 크기를 구하는 문제이다.시간 제한: 2초메모리 제한: 128MB 2. 접근 방식음식물 쓰레기가 있는 위치를 load배열에 저장한다. 음식물이 있는 곳을 1로 저장한다.(0, 0) 위치부터 통로를 BFS 탐색한다.큐를 사용해 인접한 상하좌우를 탐색하여 연결된 음식물의 크기를 계산한다.BFS를 통해 구한 음식물의 크기(trashSize)를 maxTrashSize와 비교하여 최댓값을 갱신한다.  3. 최종 코드import java.io.*;import java.util.*;public class Main { static int n, m;.. 2024. 8. 25.
[백준] 1991번: 트리 순회 (Java) 1. 문제설명이진 트리를 입력받아 전위 순회, 중위 순회, 후위 순회한 결과를 출력하는 문제이다.시간 제한: 2초메모리 제한: 128MB 2. 접근 방식루트 노드를 ‘A’로 설정하고, 이진 트리의 노드 정보를 입력받는다.노드 삽입각 노드에 대해 부모 노드와 자식 노드 정보를 입력받고, 해당 부모 노드를 트리에서 찾아서 왼쪽과 오른쪽 자식 노드로 연결한다.자식이 존재하지 않으면, 자식 노드를 null로 설정한다.재귀적으로 호출하여 트리의 모든 노드를 연결한다.전위 순회: 루트 노드부터 시작하여, 왼쪽 자식 노드, 오른쪽 자식 노드 순으로 방문한다.중위 순회: 왼쪽 자식 노드를 먼저 방문한 후, 루트 노드를 방문하고, 마지막으로 오른쪽 자식 노드를 방문한다.후위 순회: 왼쪽 자식 노드, 오른쪽 자식 노드를 .. 2024. 8. 25.
[백준] 16954번: 움직이는 미로 탐색 (Java) 1. 문제설명크기가 8x8인 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 체스판 가장 왼쪽 아래 칸에서 가장 오른쪽 윗 칸으로 이동하는 게임을 진행한다. 이 게임에서 1초마다 모든 벽이 아래에 있는 행으로 한 칸씩 내려가고, 아래에 행이 없다면 벽이 사라진다. 캐릭터는 1초에 인접한 한 칸 또는 대각선 방향 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 1초 동안 먼저 이동하고, 그 다음 벽이 이동한다. 벽이 캐릭터가 있는 칸으로 이동하면 더 이상 캐릭터는 이동할 수 없다.캐릭터가 목표 지점까지 이동할 수 있는지 없는지 구하는 문제이다.시간 제한: 2초메모리 제한: 512MB 2. 접근 방식캐릭터를 (7, 0) 위치에서 출발시킨다. BFS 수행.캐릭터가 이동할 수 있는 위치(상하좌우, 대각.. 2024. 8. 24.
[백준] 1600번: 말이 되고픈 원숭이 (Java) 1. 문제설명 그림은 말의 이동방법을 나타낸다. x 표시한 곳으로 말이 갈 수 있다. 말은 장애물을 뛰어넘을 수 있다. 원숭이는 인접한(상하좌우) 칸으로 이동할 수 있고, 말의 이동방법으로 K번만 움직일 수 있다. 모든 이동은 한 번의 동작으로 친다.원숭이가 격자판의 맨 왼쪽 위에서 맨 오른쪽 아래까지 이동할 때, 동작수의 최솟값을 구하는 문제이다.  시간 제한: 2초메모리 제한: 256MB 2. 접근 방식⇒ 이동하는 동작 수의 최솟값 구하기 → BFS원숭이의 이동 경우를 저장하는 dx1, dy1 배열과 말의 이동 경우를 저장하는dx2, dy2 배열을 사용한다.격자판 (0, 0) 위치에서 BFS 탐색을 시작한다.원숭이의 이동 방법(상하좌우)을 사용하여 인접한 4방향으로 이동을 시도한다.말의 이동 방법을 .. 2024. 8. 24.
[백준] 14620번: 꽃길 (Java) 1. 문제설명씨앗은 꽃을 심고나면 1년 후에 꽃이 핀다. 꽃의 씨앗은 세 개밖에 없으므로 세 개의 꽃이 하나도 죽지 않고 1년 후에 꽃잎이 만개하게 한다. 꽃밭은 N*N의 격자 모양이고 씨앗은 (1,1)~(N,N)의 지점 중 한 곳에 심을 수 있으며 꽃이 피면 격자 모양의 위치를 차지한다. 꽃은 다른 꽃잎 또는 꽃술과 닿게 될 경우 두 꽃 모두 죽고, 화단 밖으로 나갈 경우도 꽃이 죽게 된다.화단의 지점 당 가격이 주어지고, 세 개의 씨앗이 모두 꽃이 피게 하는 최소 비용을 구하는 문제이다.시간 제한: 2초메모리 제한: 256MB 2. 접근 방식DFS를 사용하여 3개의 꽃을 심을 수 있는 위치를 탐색한다.꽃을 심을 위치를 선택할 때, 꽃과 꽃잎이 차지하는 위치를 방문하지 않았는지 확인한다.만약 3개의 꽃.. 2024. 8. 24.
[백준] 2146번: 다리 만들기 (Java) 1. 문제설명  NxN 크기의 이차원 평면상에 나라가 존재한다. 이 나라는 여러 섬으로 이루어져 있다. 육지가 없는 바다에 가장 짧은 다리를 놓아 두 대륙을 연결하고자 한다.두 대륙을 연결하는 가장 짧은 다리 하나를 구하는 문제이다. (길이 구하기)   시간 제한: 2초메모리 제한: 192MB 2. 접근 방식섬 구분 → BFS를 사용하여 각 섬에 번호를 부여한다.최소 다리 길이 계산BFS를 사용하여 각 섬에서 다른 섬까지의 최단 거리를 계산한다.바다인 곳으로 확장하면서 다른 섬에 도달할 때까지의 거리를 구하고, 이 중 짧은 거리를 찾는다. 3. 최종 코드import java.io.*;import java.util.*;public class Main { static int n; // 지도의 크기 .. 2024. 8. 23.
[백준] 7562번: 나이트의 이동 (Java) 1. 문제설명  왼쪽 그림은 체스판에서 나이트가 한 번에 이동할 수 있는 칸이다.현재 나이트가 있는 칸, 나이트가 이동하려고 하는 칸이 주어졌을 때, 나이트가 몇 번의 움직임으로 목표 칸에 도달할 수 있는지 구하는 문제이다.   시간 제한: 1초메모리 제한: 256MB 2. 접근 방식나이트가 현재 있는 칸 부터 BFS를 수행한다.나이트가 이동할 수 있는 칸으로 탐색하고, 이동하는 위치에 현재 위치까지의 거리 + 1을 저장한다.목표 지점에 도달하면 해당 칸의 거리를 출력한다.  3. 최종 코드import java.io.*;import java.util.*;public class Main { static int l; // 체스판 한 변의 길이 static int[][] board; // 체스판 .. 2024. 8. 23.
반응형