백준 2822: 점수 계산

송병훈·2022년 7월 9일

입력
8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.

출력
첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.


list를 3개 사용해서 풀었다.

  • 처음에 입력받을 list -> 정렬 후 가장 높은 점수 5개의 합을 구한다.
  • 이것을 복제한 list -> 가장 높은 점수 5개의 원래 index를 알아낸다.
  • index만 저장할 list -> 알아낸 index를 저장하고, 정렬한다.

list에 값을 저장할 때는
list의 길이를 미리 지정해서 생성한 것이 아니기에,

s = []
s[i] = int(sys.stdin.readline())

처럼 하면 error가 발생한다.
s[i]가 없기 때문이다.

이렇게 길이가 미정인 list에는 append() 함수를 사용해줘야 한다.

s.append(int(sys.stdin.readline()))

값을 복제할 때는

ss.append(s[i])

할 수 있다. 왜냐하면 append로 값을 저장하여 s[i]가 생성되었기 때문이다.


sort() 함수를 사용하면 저절로 list가 오름차순으로 정렬된다.


index() 함수를 사용하면 괄호 안에 적힌 값의 index(위치)를 반환한다.

profile
성실하고 꼼꼼하게

0개의 댓글