반응형

Algorithm 95

[Algorithm/Java] 알고리즘 자바 최대 수입 스케줄(코딩테스트, Greedy Algorithm, 탐욕 알고리즘, Priority Queue, 우선순위 큐)

1. 문제 설명 설명 현수는 유명한 강연자이다. N개이 기업에서 강연 요청을 해왔다. 각 기업은 D일 안에 와서 강연을 해 주면 M만큼의 강연료를 주기로 했다. 각 기업이 요청한 D와 M를 바탕으로 가장 많을 돈을 벌 수 있도록 강연 스케쥴을 짜야 한다. 단 강연의 특성상 현수는 하루에 하나의 기업에서만 강연을 할 수 있다. 입력 첫 번째 줄에 자연수 N(1

Algorithm 2022.06.02

[Algorithm/Java] 알고리즘 자바 결혼식(코딩테스트, Greedy Algorithm, 탐욕 알고리즘, 존재하는 사람 수 최대값, 동시에 존재하는 최대 인원)

1. 문제 설명 설명 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. 입력 첫째 줄에 피로연에 참석할 인원수 N(5

Algorithm 2022.06.01

[Algorithm/Java] 알고리즘 자바 회의실 배정(코딩테스트, Greedy Algorithm, 탐욕 알고리즘, 최대로 회의를 사용)

1. 문제 설명 설명 한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 입력 첫째 줄에 회의의 수 n(1

Algorithm 2022.05.31

[Algorithm/Java] 알고리즘 자바 씨름 선수(코딩테스트, Greedy Algorithm, 탐욕 알고리즘, 최대 인원 선발)

1. 문제 설명 설명 현수는 씨름 감독입니다. 현수는 씨름 선수를 선발공고를 냈고, N명의 지원자가 지원을 했습니다. 현수는 각 지원자의 키와 몸무게 정보를 알고 있습니다. 현수는 씨름 선수 선발 원칙을 다음과 같이 정했습니다. “A라는 지원자를 다른 모든 지원자와 일대일 비교해서 키와 몸무게 모두 A지원자 보다 높은(크고, 무겁다) 지원자가 존재하면 A지원자는 탈락하고, 그렇지 않으면 선발된다.” N명의 지원자가 주어지면 위의 선발원칙으로 최대 몇 명의 선수를 선발할 수 있는지 알아내는 프로그램을 작성하세요. 입력 첫째 줄에 지원자의 수 N(5

Algorithm 2022.05.30

[Algorithm/Java] 알고리즘 자바 피자 배달 거리 DFS (코딩테스트, DFS, BFS, 최단거리, 최소거리, 최소 거리 합)

1. 문제 설명 설명 N×N 크기의 도시지도가 있습니다. 도시지도는 1×1크기의 격자칸으로 이루어져 있습니다. 각 격자칸에는 0은 빈칸, 1은 집, 2는 피자집으로 표현됩니다. 각 격자칸은 좌표(행번호, 열 번호)로 표현됩니다. 행번호는 1번부터 N번까지이고, 열 번호도 1부터 N까지입니다. 도시에는 각 집마다 “피자배달거리”가 았는데 각 집의 피자배달거리는 해당 집과 도시의 존재하는 피자집들과의 거리 중 최소값을 해당 집의 “피자배달거리”라고 한다. 집과 피자집의 피자배달거리는 |x1-x2|+|y1-y2| 이다. 예를 들어, 도시의 지도가 아래와 같다면 (1, 2)에 있는 집과 (2, 3)에 있는 피자집과의 피자 배달 거리는 |1-2| + |2-3| = 2가 된다. 최근 도시가 불경기에 접어들어 우후죽..

Algorithm 2022.05.29

[Algorithm/Java] 알고리즘 자바 섬나라 아일랜드 BFS (코딩테스트, DFS, BFS, 섬의 개수 구하기)

1. 문제 설명 설명 N*N의 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다. 각 섬은 1로 표시되어 상하좌우와 대각선으로 연결되어 있으며, 0은 바다입니다. 섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요. 만약 위와 같다면 섬의 개수는 5개입니다. 입력 첫 번째 줄에 자연수 N(3= 0 && ny < n && board[nx][ny] == 1) { board[nx][ny] = 0; queue.add(new Point(nx, ny)); } } } } // board를 탐색하며 1이 존재하는 지 찾음 // 찾았다면 섬의 개수 answer을 +1을 하고 BFS를 돌려서 인접한 모든 1을 0으로 바꿔줌 public void solution(int[][] board) { for (in..

Algorithm 2022.05.28

[Algorithm/Java] 알고리즘 자바 섬나라 아일랜드 DFS (코딩테스트, DFS, BFS, 섬의 개수 구하기)

1. 문제 설명 설명 N*N의 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다. 각 섬은 1로 표시되어 상하좌우와 대각선으로 연결되어 있으며, 0은 바다입니다. 섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요. 만약 위와 같다면 섬의 개수는 5개입니다. 입력 첫 번째 줄에 자연수 N(3= 0 && ny < n && board[nx][ny] == 1) { board[nx][ny] = 0; DFS(nx, ny, board); } } } // board를 탐색하며 1이 존재하는 지 찾음 // 찾았다면 섬의 개수 answer을 +1을 하고 DFS를 돌려서 인접한 모든 1을 0으로 바꿔줌 public void solution(int[][] board) { for (int i = 0; i <..

Algorithm 2022.05.27

[Algorithm/Java] 알고리즘 자바 토마토 BFS (코딩테스트, DFS, BFS, 토마토 익히기, 최단경로, 최단거리)

1. 문제 설명 설명 현수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 현수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지, 그 최소 일수를 알고 싶어 한다. 토마토를 창고에 보관하는 ..

Algorithm 2022.05.26

[Algorithm/Java] 알고리즘 자바 미로의 최단거리 통로 BFS (코딩테스트, DFS, BFS, 미로찾기, 최단경로)

1. 문제 설명 설명 7*7 격자판 미로를 탈출하는 최단경로의 길이를 출력하는 프로그램을 작성하세요. 경로의 길이는 출발점에서 도착점까지 가는데 이동한 횟수를 의미한다. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7) 좌표이다. 격자판의 1은 벽이고, 0은 도로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위와 같은 경로가 최단 경로의 길이는 12이다. 입력 첫 번째 줄부터 7*7 격자의 정보가 주어집니다. 출력 첫 번째 줄에 최단으로 움직인 칸의 수를 출력한다. 도착할 수 없으면 -1를 출력한다. 2. 문제 코드 및 풀이 설명 import java.util.LinkedList; import java.util.Queue; import java.util.Scanne..

Algorithm 2022.05.25

[Algorithm/Java] 알고리즘 자바 미로탐색 DFS (코딩테스트, DFS, BFS, 미로찾기)

1. 문제 설명 설명 7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력 7*7 격자판의 정보가 주어집니다. 출력 첫 번째 줄에 경로의 가지수를 출력한다. 2. 문제 코드 및 풀이 설명 import java.util.Scanner; public class Maze { // 미로를 찾는 방향을 설정한 배열 static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, 1, 0, -1}; // ..

Algorithm 2022.05.24
반응형