나를 기록하다
article thumbnail
반응형

일곱 난쟁이 성공스페셜 저지

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초128 MB116332478493416041.880%

문제

왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다.

아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다.

아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.

입력

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

출력

일곱 난쟁이의 키를 오름차순으로 출력한다. 일곱 난쟁이를 찾을 수 없는 경우는 없다.

예제 입력 1

20
7
23
19
10
15
25
8
13

예제 출력 1

7
8
10
13
19
20
23

import sys
n = 9
a = [int(input()) for _ in range(n)]
a.sort()
total = sum(a)
for i in range(0, n):
    for j in range(i+1, n):
        if total - a[i] - a[j] == 100:
            for k in range(0, n):
                if i == k or j == k:
                    continue
                print(a[k])
            sys.exit(0)
  1. import sys: sys 모듈을 가져옵니다. sys 모듈은 시스템 관련 기능을 제공하는 파이썬 내장 모듈입니다.
  1. n = 9: 변수 n에 9를 저장합니다. 이는 리스트 a의 길이가 9라는 뜻입니다.
  1. a = [int(input()) for _ in range(n)]: 리스트 컴프리헨션을 사용하여 사용자로부터 9개의 숫자를 입력받아 리스트 a에 저장합니다. int(input())을 통해 입력받은 값은 정수로 변환됩니다.
  1. a.sort(): 리스트 a를 오름차순으로 정렬합니다.
  1. total = sum(a): 리스트 a의 모든 숫자의 합을 구하여 변수 total에 저장합니다.
  1. for i in range(0, n):: 0부터 n-1까지 반복하는 i에 대해 순회합니다.
  1. for j in range(i+1, n):: i+1부터 n-1까지 반복하는 j에 대해 순회합니다. 이렇게 함으로써 i와 j는 서로 다른 인덱스를 가리키게 됩니다.
  1. if total - a[i] - a[j] == 100:: total에서 a[i]와 a[j]를 뺀 값이 100과 같은지 확인합니다. 만약 같다면 아래의 코드를 실행합니다.
  1. for k in range(0, n):: 0부터 n-1까지 반복하는 k에 대해 순회합니다.
  1. if i == k or j == k:: 만약 k가 i와 동일하거나 j와 동일하다면 건너뜁니다. 즉, i나 j와 같은 인덱스는 출력에서 제외됩니다.
  1. print(a[k]): k번째 숫자를 출력합니다. 이는 a 리스트에서 i와 j를 제외한 나머지 숫자를 출력하는 역할을 합니다.
  1. sys.exit(0): 프로그램을 종료합니다.


Uploaded by N2T

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...