[백준][Python] 2012번: 등수 매기기

2024. 11. 18. 20:36·공부하기/문제 풀기

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

 

 

오랜만에 파이썬을 사용해서 문제를 풀어보기로 했다.

 

문제를 처음 봤을 때에는 이해가 바로 안될 수 있다.

 

예제를 보면서 확인해보자

 

1, 5, 3, 1, 2 가 입력으로 들어왔는데

이 입력은 자신의 예상 등수이다.

 

만약 리스트를 정렬해 [5, 3, 2, 1,  1]로 해놓았다면

각각의 불만도는 [ 4 (5-1), 1 (3 - 2), 1 (2 - 3), 3 (1 - 4), 4 (1 - 5) ]가 된다.

 

즉, 최대한 인덱스+1과 입력받은 수가 가까워야 한다.

 

그냥 최대한 가까이 놓으면 되니까 정렬하면 끝난다.

 

오름차순으로 정렬할 경우 1에 가까울 수록 왼쪽에, N에 가까울 수록 오른쪽에 배치되기 때문에

불만도(거리)가 최소화될 수 있기 때문이다.

 

 

파이썬을 오랜만에 다뤄봐서 작성했더니 시간초과가 발생해 잘못한줄 알았다.

 

그런데 sys.stdin.readline()으로 input()을 변경해주었더니 바로 해결되었다.

한줄에 입력 하나라 이부분에서 시간이 많이 걸린 것 같다.

 

코드 보기

더보기
import sys
N = int(sys.stdin.readline())
people = [int(sys.stdin.readline()) for _ in range(N)]

people.sort()
sum = 0

for i in range(1, N+1):
    sum += abs(i - people[i-1])

print(sum)

 

 

'공부하기 > 문제 풀기' 카테고리의 다른 글

[백준][Python] 1755번: 숫자놀이  (0) 2024.11.22
[백준][Python] 2502번: 떡 먹는 호랑이  (0) 2024.11.20
[백준][C] 2003번: 수들의 합 2  (0) 2024.11.17
[백준][C] 1103번: 게임  (0) 2024.11.16
[백준][C] 1629번: 곱셈  (0) 2024.11.13
'공부하기/문제 풀기' 카테고리의 다른 글
  • [백준][Python] 1755번: 숫자놀이
  • [백준][Python] 2502번: 떡 먹는 호랑이
  • [백준][C] 2003번: 수들의 합 2
  • [백준][C] 1103번: 게임
Potan7
Potan7
그냥 내 맘대로 올리는 곳 프사 : 카미쵸(kyamicho) (먼지먼지(jominji1374) 수정)
  • Potan7
    Potan의 개발 블로그
    Potan7
  • 전체
    오늘
    어제
    • 분류 전체보기 (28)
      • 공부하기 (24)
        • 문제 풀기 (15)
        • 마인크래프트 모드 만들기 (8)
        • 유니티 (1)
      • 프로젝트 (4)
        • 마인크래프트 디스플레이 애니메이션 툴 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    모드 개발
    백분
    거듭제곱
    네오포지
    문제풀이
    분수 합
    알고리즘
    파이썬
    DynamicProgramming
    힙
    백준 1735
    이진 트리
    오블완
    DP
    유니티
    백준 분수 합
    dfs
    티스토리챌린지
    마인크래프트
    백준 경매
    팩토리얼
    누적합
    완전 이진 트리
    백준
    1735
    c
    트리
    2238번
    나머지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Potan7
[백준][Python] 2012번: 등수 매기기
상단으로

티스토리툴바