본문 바로가기

전체 글19

[BOJ 백준] 16954 - 움직이는 미로 탈출, Java(자바) 문제 https://www.acmicpc.net/problem/16954 16954번: 움직이는 미로 탈출 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 www.acmicpc.net 풀이 bfs를 이용해 풀었다. 해당 초에서 다음 초에 이동 가능한 경우를 큐에 담고, 벽이 내려가는 함수 drop() 함수를 실행한다. 초마다 맵이 바뀌므로 visited 배열을 초마다 초기화해야 한다. 코드 import java.util.*; import java.io.*; public class Main { static int N; static int[][] board; pub.. 2023. 3. 7.
[BOJ 백준] 1931 - 회의실 배정, Java(자바) 문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 그리디 + 정렬로 문제를 풀었다. 먼저 회의를 종료 시간이 가장 빠른 순서대로 정렬한다. 이때, 종료 시간이 같다면 시작 시간이 빠른 순서대로 정렬한다. current에 현재 시간을 표시하고, 배열을 돌면서 현재 시간이 회의 시작 시간보다 작거나 같다면 현재 시간을 회의 종료 시간으로 바꾸고 카운트를 늘린다. 코드 import java.util.*; import java.io.*; public class Main { public static void main(String args[]) throws Ex.. 2023. 3. 7.
[BOJ 백준] 12764 - 싸지방에 간 준하, Java(자바) 문제 https://www.acmicpc.net/problem/12764 12764번: 싸지방에 간 준하 첫째 줄에 사람의 수를 나타내는 \(N\)이 주어진다. \((1 \le N \le 100,000)\) 둘째 줄부터 \(N\)개의 줄에 걸쳐서 각 사람의 컴퓨터 이용 시작 시각 \(P\)와 종료 시각 \(Q\)가 주어진다. \((0 \le P \lt Q \le 1,000 www.acmicpc.net 풀이 먼저 입력을 시작 시간이 빠른 순서대로 우선순위 큐 pq에 넣는다. 종료 시간이 빠른 순서대로 이용 중인 컴퓨터를 담는 우선순위 큐 computers, 사용 가능한 컴퓨터를 번호가 작은 순서대로 담는 우선순위 큐 available, 컴퓨터 번호 순서대로 이용자 수를 담을 배열 arr을 생성한다. pq에.. 2023. 3. 7.
[BOJ - 백준] 14923 - 미로탈출, Java(자바) 문제 https://www.acmicpc.net/problem/14923 14923번: 미로 탈출 홍익이는 사악한 마법사의 꾐에 속아 N x M 미로 (Hx, Hy) 위치에 떨어졌다. 다행히도 홍익이는 마법사가 만든 미로의 탈출 위치(Ex, Ey)를 알고 있다. 하지만 미로에는 곳곳에 마법사가 설치한 벽이 www.acmicpc.net 풀이 visited 배열을 3차원으로 만들어 bfs로 풀었다. 0은 벽을 부수기 전, 1은 벽을 부순 후를 나타낸다. 코드 import java.util.*; import java.io.*; class Move { int r, c, dir; Move(int r, int c, int dir) { this.r = r; this.c = c; this.dir = dir; } } p.. 2023. 3. 7.
[BOJ 백준] 17090 - 미로 탈출하기, Java(자바) 문제 https://www.acmicpc.net/problem/17090 17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net 풀이 dfs + dp로 풀이했다. delta 배열의 인덱스에 맞춰 map 배열을 초기화한다. 배열을 돌면서 아직 방문하지 않은 곳이면 칸에 적힌대로 이동하고, 탈출할 수 있으면 지나온 경로를 모두 true로, 탈출할 수 없으면 지나온 경로를 모두 false로 나타내면서 탈출 가능한 칸의 수를 카운팅한다. 코드 import java.util.*; import java.io.*;.. 2023. 3. 4.