본문 바로가기

분류 전체보기

(215)
백준 1021 회전하는 큐 (Java) 1. 문제 링크 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 문제가 큐라서 큐로 풀어보려고 했는데 위치를 찾기 위해 LinkedList로 풀었다. LinkedList를 이용하니까 offer와 poll 모두 first와 last를 이용해 앞 뒤를 간단하게 확인할 수 있다. 찾아야 하는 원소의 위치를 찾고 중간보다 앞이라면 왼쪽으로, 중간보다 뒤라면 오른쪽으로 이동한다. 4. 코드 import java.io.BufferedReader; import java.io.I..
백준 2252 줄 세우기 (Java) 1. 문제 링크 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 두 학생의 키를 비교해 전체 학생을 줄 세우는 위상정렬 문제이다. 학생 전체에 대한 비교가 아니라 인접리스트를 이용했다. 방향 그래프를 입력받으면서 진입차수를 늘렸다. 진입차수가 0이 되면 큐에 넣고, 큐가 빌 때까지 큐에서 뽑으면서 인접 노드를 처리한다. 큐에서 뽑은 순서대로 ArrayList에 넣고 출력한다. 4. 코드 import java.io.Buffere..
백준 16236 아기상어 (Java) 1. 문제 링크 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 BFS와 PriorityQueue를 이용해 풀었다. 현재 상어의 위치를 기준으로 사방으로 BFS 하면서 먹을 수 있는 크기인지 or 지나갈 수 있는 크기인지 확인해서 각각 PQueue와 Queue에 넣는다. Point 클래스에 Comparable을 구현해서 정렬된 상태로 PQueue에 들어간다. 주의할 점은 맨해튼 거리를 사용하는 것이 아니고, 움직인 거리를 더해야 한다. 4. 코드 import ja..
백준 9375 패션왕 신해빈 (Java) 1. 문제 링크 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력 받을 때 종류별로 담는데 Map에 종류와 그 종류에 몇개가 있는지 넣는다. 중복이 없다고 했기 때문에 숫자만 세도 괜찮다. 모든 입력을 받은 후 종류별로 개수를 곱하면 되는데, 안 하는 경우도 생각해서 +1한 값을 곱한다. 그리고 아무것도 입지 않은 상태인 경우인 하나를 빼면 끝이다. 4. 코드 import ..
백준 1920 수 찾기 (Java) 1. 문제 링크 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 그냥 모든 수를 입력받고 찾는다면 시간 초과가 난다. 이진 탐색을 해야 하는데 정렬 후 jdk 메서드 중 하나인 이분 탐색을 이용했다. 값이 음수가 나올 경우에는 목록에 값이 없는 것이고, 양수면 존재하는 것이다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import jav..
백준 1759 암호 만들기 (Java) 1. 문제 링크 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 조합을 이용해 가능한 모든 암호를 만든다. 출력 전에 조건문을 이용해 모음 하나, 모음 두 개 이상인지 확인해서 출력한다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.util.Arrays; public class Main { static int L, C, numbers[], mo, ja; static String[] ..
백준 2567 색종이-2 (Java) 1. 문제 링크 2567번: 색종이 - 2 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력받은 값 반복문을 통해 스카프가 존재하는 구역을 표시한다. 나는 세로와 가로를 따로 구했다. 반복문을 돌면서 스카프가 놓여있다면 가로에서 처음 놓였을 때 양쪽 세로를 미리 더했다. 위에는 스카프가 있는데 밑에는 스카프가 없다면 가로를 1만큼 더한다. 가로에서 처음 놓인게 아닐 때, 밑이 없으면 밑을 1만큼 추가한다. 이렇게 스카프 밑면의 값을 다 구한 다음에 *2하면 가로 값도 전부 구한 것이다. ..
백준 27160 할리갈리 (Java) 1. 문제 링크 27160번: 할리갈리 한별이가 종을 쳐야 하면 YES을, 아니면 NO를 출력해주세요. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 Map을 이용해 해당 과일이 없을 경우 새로 추가하고, 있을 경우 기존 값에 더해서 넣는다. 모든 입력이 끝난 후 value 중 5가 있으면 YES를 출력하고, 없다면 NO를 출력한다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; public class Main { static StringBuilder sb = new StringBuilder(); publi..