반응형

Algorithm_study/Greedy 4

BAEKJOON #1931

문제요약 N개의 회의에 대하여 회의 시작시간과 끝나는 시간이 주어진다. 한 개의 회의실에 시간이 겹치지 않게 하면서 사용할 수 있는 회의의 최대 개수를 찾아라. 아이디어 그리디 알고리즘 문제니까 최적의 경우를 먼저 골라야한다. 각 회의의 시작 시간과 끝나는 시간이 정렬되지 않은 체 주어진다. ex) (0,2), (2, 3), (3, 8), (3, 6), (6,9) 가 주어졌다고 가정하자. (0, 2), (2, 3) 고르고 난 뒤, (3, 8)과 (3, 6)중에 (3, 6)을 골라야 최대이다. 현재 회의 끝나는 시간 회의실 이용 가능 끝나는 시간 기준으로 회의실 이용 가능한지 여부가 판단된다. 입력받은 회의 시간들은 시작 시간 기준으로 오름차순으로 정렬해주지 않는다. 즉,..

BAEKJOON #4796

문제 요약 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. (L< P < V) 아이디어 휴가일수(V)에서 P/L만큼 조정해야한다. ex) P=8, L=5, L=20 캠핑장을 연속하는 8일 중, 5일동안만 사용할 수 있다. 강산이는 이제 막 20일짜리 휴가를 시작했다. 이를 표로 시각화 해보면 더 이해하기 쉽다. 1일 2일 3일 4일 5일 1일 2일 3일 4일 1일 2일 3일 4일 5일 8일 중에 5일을 사용하고 난뒤, 3일 뒤에 사용할 수 있다. 8일씩 묶고 한 묶음 안에 5일씩 더해주고, 남은 5일은 3일 뒤니까 5일 더할 수 있다. 이를 식으로 표현해보자. V//P*L + (V%8) 20//8*5 + (20%8) 그런데, 문제가 생긴다. 만약 나머..

BAEKJOON #2720

이 문제에서 가장 중요한 핵심 포인트는 "동전의 개수 최소" 를 구하는 것이다. 동전의 개수가 최소가 되려면 동전이 최대 값이어야 한다. ▶ 큰 값 부터 거스름돈을 나누고 (쿼터>다임>니켈수>페니) 하나씩 차례대로 나눈 몫이 정답이다. 코드 : num = int(input()) case = [] for i in range(num): change = int(input()) #거스름돈 입력 case.append(change) #각 테스트케이스 리스트로 담아둠 for i in case: # 테스트 케이스 마다 가장 큰 수부터 나눈 몫 구하기 quo1 = i // 25 res1 = i % 25 quo2 = res1 // 10 res2 = res1 % 10 quo3 = res2 // 5 res3 = res2 % ..

반응형