본문 바로가기

그리디

(4)
백준 1493 박스 채우기 (파이썬) https://www.acmicpc.net/problem/1493 1493번: 박스 채우기 세준이는 length × width × height 크기의 박스를 가지고 있다. 그리고 세준이는 이 박스를 큐브를 이용해서 채우려고 한다. 큐브는 정육면체 모양이며, 한 변의 길이는 2의 제곱꼴이다. (1×1×1, 2×2×2, www.acmicpc.net 풀이 직사각형 박스에 주어진 정육면체 큐브들을 채워넣는 문제입니다. 처음 문제를 접하였을때 부피로 어떻게든 풀어야 겠다고 생각은 하였지만 어떻게 해결을 해야할지 고민을 하였지만 구현을 하기 까다로운 문제였다고 생각합니다. 제가 처음 접근한 방식은 주어진 상자에 주어진 큐브들을 정해진 갯수만큼 채워넣고 남은 부피를 갱신시켜 가며 풀고자 하였지만 구현으로 옮길 자신이..
백준 2812 크게 만들기 (파이썬) https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 숫자를 지웠을때 만들수있는 수 가운데 가장 큰 수를 만들어야 하는 문제이다. 이 문제는 그리디 문제로 일종의 규칙을 발견하는 것이 중요하다. 입력 예제로 주어진 값들을 직접 지우다 보면 다음과 같은 규칙들을 발견할 수 있다. 순서 예제 입력1 예제 입력2 예제 입력3 1 1924 1231234 4177252841 2 924 231234 477252841 3 94 31234 77252841 3234 7752841 775841 값을 지우다 보면 idx의 값과 idx+1의 ..
[프로그래머스] 구명보트 (파이썬) 문제 풀이 그리디 알고리즘에 속하는 문제로 현재 선택할수있는 최선의 선택을 하면 된다. 나는 다음과 같이 접근했다. 1. people을 오름차순으로 정렬한다. 2. people을 deque 형태로 재정의 한다. 3. people이 비어 있을때까지 아래의 행위를 반복한다. 3-1. people의 가장 큰 몸무게를 가진 사람을 배에 태운다. 즉 people의 가장 끝에 존재하는 사람을 태운다. 그리고 배에 탑승한 사람의 몸무게 정보를 people에서 pop한다. 3-2. 배에 탑승할수 있는 사람들중 몸무게가 가장 낮은 사람을 태운다. 즉 people의 가장 앞에 존재하는 사람을 확인한다. 만약 배에 탑승할수있다면 그 사람의 정보를 people에서 pop한다 3-3. 배의 수를 +1증가시킨다. https://..
백준 20207 달력(JAVA) 문제 https://www.acmicpc.net/problem/20207 20207번: 달력 수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장 www.acmicpc.net 코드 package com.company; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { static int N; static boo..