본문 바로가기

Problem Solving/Baekjoon1330

[백준] 11000 강의실 배정 - Greedy / Java • 문제 링크 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net • 풀이 과정 • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Priorit.. 2022. 11. 18.
[백준] 2847 게임을 만든 동준이 - Greedy / Java • 문제 링크 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net • 풀이 과정 특정 레벨의 점수를 감소만 시켜 조정하므로 마지막 레벨의 점수가 가장 크다. 따라서 반복문을 역으로 돌려 마지막 레벨부터 확인한다. 만약 n = 1 일 경우 감소시킬 레벨이 없으므로 0 을 반환하고 그 외의 경우 입력을 크기가 n인 배열에 역순으로 저장한다. 만약 현재 레벨의 점수가 한 단계 상위 레벨보다 클 경우, 현재 레벨의 점수를 상위 레벨의 점수 - 1 로 조정할 수 있는 값을 구한다. 해당 값을 cnt 변수에 더하고, 현재.. 2022. 11. 17.
[백준] 1439 뒤집기 - Greedy / Java • 문제 링크 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net • 풀이 과정 예제 입력 4를 예시로 들자면, 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 위와 같이 부분적으로 뒤집어 점진적으로 뒤집는 .. 2022. 11. 16.
[백준] 11501 주식 - Greedy / Java • 문제 링크 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net • 풀이 과정 각 날짜를 기준으로 현재 주가보다 추후에 주가가 더 상승하는 날이 존재하는 지 확인한다. 이를 위해 반복문을 역으로 돌려 마지막 날부터 확인한다. 현재 주가가 최고 주가를 저장할 max 보다 크다면 해당 날짜의 주가로 max 를 갱신하고, 현재 주가가 max 보다 작다면 해당 날짜를 기준으로 이후에 주가가 더 오르는 날이 존재하게 된다. 따라서 이 때 주식을 하나 구매하고 마지막 날부터 확인하여 구해진 max 일 때 판매하.. 2022. 11. 15.
[백준] 10162 전자레인지 - Greedy / Java • 문제 링크 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net • 풀이 과정 각 버튼 당 동작 시간 300, 60, 10 을 큰 순서대로 입력값 t 로 나눈 나머지를 구해 t를 갱신하고, 각각의 몫을 StringBuilder 에 더하여 정답으로써 출력한다. 만약 t 를 10으로 나눈 나머지가 0이 아닐 시 어떠한 버튼으로도 정확히 나누어 떨어지지 않으므로 -1 을 출력한다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; im.. 2022. 11. 14.
[백준] 5585 거스름돈 - Greedy / Java • 문제 링크 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net • 풀이 과정 주어진 동전의 큰 값부터 입력값 n로 나눌 수 있다면, 해당 몫을 res 변수에 누적하고 n 은 그 나머지로 갱신한다. 모든 동전에 대해 위와 같은 과정을 거친 후 구해진 잔돈의 개수 res 를 정답으로써 출력한다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.i.. 2022. 11. 13.