티스토리 뷰
https://www.acmicpc.net/problem/2012
1. 문제
2. 정답 코드
import sys
n = int(input())
data = []
for _ in range(n) :
data.append(int(sys.stdin.readline()))
data.sort() # 오름차순 정렬
unhappy = [abs(x - (i+1)) for i, x in enumerate(data) ]
answer = sum(unhappy)
print(answer)
- 최소 불만을 구하는 방법은 오름차순 정렬된 등수에 실제 등수를 빼는 것이다.
- 예상 등수 입력 시 시간 초과가 나지 않으려면, input() 대신 더 빠른 입력처리가 가능한 sys.stdin.readline() 사용해야 한다.
- (i+1)번째 학생의 불만도는 (i + 1)번째 학생의 예상 등수 x에서 실제 등수인 (i+1)을 뺀 값이다.
- 각 불만도의 합, 즉 sum(unhappy)가 정답이다.
- 이때 List Comprehension 사용하는 방법 대신 아래와 같이 코드를 작성할 수도 있다.
# List Comprehension 대신 아래 코드도 가능
answer = 0
for i, x in enumerate(data) :
answer += abs(x - (i+1))
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 2730번 색종이 만들기 파이썬 정답 코드 (0) | 2023.05.14 |
---|---|
[백준] 4779번 칸토어 집합 파이썬 정답 코드 (0) | 2023.05.13 |
[백준] 2217번 로프 파이썬 정답 코드 (0) | 2022.11.18 |
[백준] 11399번 ATM 파이썬 정답 코드 (0) | 2022.11.18 |
[백준] 2839번 설탕 배달 파이썬 정답 코드 (0) | 2022.11.18 |