티스토리 뷰

Study/Algorithm

백준 13458: 시험감독

jhin.lee 2019. 9. 9. 09:27

문제

https://www.acmicpc.net/problem/13458

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net

풀이

만약 시험장에 있는 응시자의 수(x)가 총감독관이 관리 가능한 수(A) 보다 작거나 같다면, 시험장에는 총 감독관 1명이 필요할 것이다. 만약 크다면 2가지 경우가 있다.

1.  x-A를 부감독관이 관리 가능한 수(B)로 나눴을 때 나머지가 0인경우

2. 나머지가 0 이상인 경우

나머지의 몪에 1의 경우 0, 2의 경우 1을 더한다.

 

코드

 

숏코딩 분석

내 코드는 내 코드지만 남이 잘한 코드를 분석하는게 공부가 제일 많이 되는 것 같다.

 

백준의 코드골프 네임드인 sait2000 님의 코드다. (분석을 위해 ;를 개행으로 바꿨다.)

input()
a,[b,c]=eval('map(int,input().split()),'*2)
print(sum(1-min(0,(b-n)//c)for n in a))

파이썬에서는 배열을 입력받을 때 굳이 배열의 길이를 알 필요가 없다. 따라서 N을 사용하지 않으므로 값을 저장하지 않았다.

내가 map 구문을 2번 반복한데 비해 eval함수를 이용해 한번에 값을 받았다.

eval을 풀어서 쓰면 다음과 같다. 

a,[b,c] = map(int,input().split()), map(int,input().split()),

이해가 안되는 부분은 마지막 쉼표가 에러를 발생시키지 않는 부분이다. (실제로 실험해보니 예외가 발생하지 않는다)

대괄호를 써서 각각의 map object를 원하는 대로 입력시키는 부분은 좋은 구문인 것 같다.

0인경우를 체크할 때 min을 쓰는 거는 진짜 상상도 못한 구문이다.

n-b가 아니라 일부러 b-n을 하여서... 음수를 받아오는 구문? 와 정말... 아름답다

list comprehension구문을 대괄호로 안 감싸고 이런 방법으로 사용할 수 있는것도 처음 알았다.

'Study > Algorithm' 카테고리의 다른 글

백준 14503: 로봇청소기  (0) 2019.09.09
백준 14500: 테트로미노  (0) 2019.09.09
07. WILDCARD  (0) 2019.05.27
06. FANMEETING  (0) 2019.05.27
05. FENCE  (0) 2019.05.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함