백준(33)
-
[Baekjoon] 2251번: 물통
https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 문제 설명 문제 이해는 어렵지 않다. 물통 A, B, C가 있고 처음엔 C만 채워진 상태로 주어진다. 그 다음 물통의 물을 다른 물통으로 옮기다가 A 물통이 비었을 때의 C 물통에 담겨 있는 물의 양을 알아놓았다가 오름차순으로 출력하면 된다. 예제 입력으로 예를 들면 다음과 같다. A 물통이 비어있으므로 현재 C 물통에 차있는 만큼인 10을 정답에 추가한다. C에서 B로 물을 ..
2023.04.19 -
[Baekjoon] 16234번: 인구 이동
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 설명 BFS를 활용한 구현, 시뮬레이션 문제이다. 문제 조건을 읽고 하나하나 꼼꼼하게 작성해 나가면 된다. 풀이 방법 구현 문제다 보니 코드가 꽤 길다(100줄 가량 된다). import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Queu..
2023.04.18 -
[Baekjoon] 2252번: 줄 세우기
https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 문제 설명 위상 정렬 기초 문제이다. 위상 정렬(Topology Sort)는 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘이다. 자세한 설명은 위상 정렬을 다룬 글에서 찾아보자. 풀이 방법 위상 정렬을 구현만 하면 해결할 수 있는 문제이다. import java.io.*; import java.util.*; class..
2023.04.15 -
[Baekjoon] 9375번: 패션왕 신해빈
https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 문제 설명 기본적인 조합 문제이다. 예제 1로 예를 들면 headgear라는 의상 종류에 hat, turban이라는 두 의상이 있고, eyewear에 suglasses라는 하나의 의상이 있다. 이 경우 {hat}, {turban}, {sunglasses},{hat, sunglasses}, {turban, ..
2023.04.14 -
[Baekjoon] 13241번: 최소공배수
https://www.acmicpc.net/problem/13241 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다 www.acmicpc.net 문제 설명 주어진 두 수의 최소공배수를 출력해야 한다. 입력값 범위를 고려해 long을 사용해야 한다. 풀이 방법 두 수의 최소공배수는 (두 수의 곱) / 최대공약수로 해결할 수 있다. 최대공약수는 유클리드 호제법을 활용하여 간단하게 구현할 수 있다. import java.io.*; class Main { public st..
2023.04.13 -
[Baekjoon] 1484번: 다이어트
https://www.acmicpc.net/problem/1484 1484번: 다이어트 성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다. 성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다. www.acmicpc.net 문제 설명 입력된 G값은 현재 몸무게의 제곱에서 기억하고 있던 몸무게의 제곱을 뺀 값이다. 현재 몸무게로 가능한 모든 수를 출력해야 한다. 풀이 방법 투 포인터를 활용해 간단하고 효율적으로 해결할 수 있다. 모든 수를 출력하는 것 외에 다른 제한이 따로 없어서 당황할 수 있는데 규칙을 찾으면 반복의 종료 조건을 찾을 수 있다. 예제 입력으로 흐름을 따라가보자. 먼저 기억하고 있던 몸무게를 left, 현재 몸무게..
2023.04.11