일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 칭기즈칸
- 알고리즘
- 헬스
- 게르
- 여행
- LG글로벌챌린저
- 몽골요리
- 독일
- 담슈타트
- 몽골 헬스장
- ICT봉사단
- 백준
- Python
- 울란바토르
- 초원
- 몽골
- 칭기스칸 동상
- 코로나
- 파이썬
- 아부다비
- SWEA
- 몽골 고기
- 교환학생
- algorithm
- 월드프렌즈 ICT 봉사단
- 한 줄로 서기
- 테를지
- 소프트웨어 아카데미
- 월드프렌즈
- 테를지국립공원
- Today
- Total
맛있는물회
[맛있는물회] [파이썬] <백준 알고리즘> <삼성기출문제> 13458번 "시험 감독" 본문
문제 조건
총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 Ai명이다.
감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다.
각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다.
각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오.
Input
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
Output
각 시험장마다 응시생을 모두 감독하기 위해 필요한 감독관의 최소 수를 출력한다.
생각한 아이디어
정답률이 25프로길래 좀 쫄았지만 그렇게 어려운 문제가 아니었다.
확실히 input 값 중에 범위가 백만 막 이렇게 주어지면 해결방법은
<이분탐색 or DP or 다익스트라..> 이렇게 압축되는 것 같다.
거의 큰 인풋값을 가진 대부분의 문제는 저런 해결방법으로 가능 한듯,.,,??
그래서 dp 느낌이 나길래 dp로 접근했다.
시험장에 들어간 사람들의 MAX 값까지 dp를 구현한다.
dp에는 필요한 감독관의 수가 들어간다.
맨첨에는 총감독관이 관리할 수 있는 사람 수 즉, A까지는 1로 초기화한다.
그 이후에는 하나씩 count하면서 부감독관이 관리할 수 있는 사람 수 B번 마다 증가값을 1씩 증가해주면서 dp를 초기화 해준다.
우선 주어진 조건대로 무조건 총감독관이 1명이 필요하다.
만약 총감독관이 가능한 수 A가 4, 부감독관이 가능한 수 B가 3일때
시험장의 사람들이 A
dp
0 1 2 3 4 5 6 7 8 ... MAX [index]
1 1 1 1 1 2 2 2 3 [DP 함수]
이렇게 B만큼 count가 되면 하나더 더해주는 식으로 진행한다.
소스코드
import sys
import math
from collections import deque
import copy
input=sys.stdin.readline
INF=sys.maxsize
if __name__ == "__main__":
n=int(input())
arr=list(map(int,input().split()))
b,c=map(int,input().split())
MAX=max(arr)
dp=[1]*(MAX+1)
idx=1
cnt=0
for i in range(b+1,MAX+1):
dp[i]+=idx
cnt+=1
if cnt==c:
idx+=1
cnt=0
ans=0
for i in range(0,n):
ans+=dp[arr[i]]
print(ans)
*파이썬 문법 정리
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] [파이썬] <백준 알고리즘> 1717번 "집합의 표현" (2) | 2020.06.09 |
---|---|
[맛있는물회] [파이썬] <파이썬 문법> Counter 모듈 사용하기 (0) | 2020.06.09 |
[맛있는물회] [파이썬] <백준 알고리즘> <삼성기출문제> 13460번 "구슬 탈출2" (0) | 2020.06.08 |
[맛있는물회] [파이썬] <백준 알고리즘> 10999번 "구간 합 구하기2" (0) | 2020.06.08 |
[맛있는물회] [파이썬] <백준 알고리즘> 10816번 "숫자 카드 2" (0) | 2020.06.08 |