코딩/백준

#001 [2562]백준 파이썬

갬발장 2022. 10. 4. 01:37

 

문제

 

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

 

입력

 

3
29
38
12
57
74
40
85
61

 

출력

 

85
8

 

내 풀이

 

List = [0,0,0,0,0,0,0,0,0]
Max=0
index=0
for i in range (0,9):

    List[i] = int(input())
    Max = max(Max,List[i])
    if Max == List[i]:
        index = i



print(Max)
print(index+1)

 

모범 답안

- 9개의 숫자를 for문을 입력 받기

num_list = [] #리스트 생성
for i in range(9):
    num_list.append(int(input())) #순차적으로 append 함수를 통해 넣어준다.

print(max(num_list)) #max (List)
print(num_list.index(max(num_list)) + 1) #index 기능을 통해 호출해준다.

 

 

- for 문을 list comprehension으로 작성하기

num_list = [int(input()) for _ in range(9)]

print(max(num_list))
print(num_list.index(max(num_list)) + 1)

 

 

알아야 할 개념

 

1. for _ in range

 

파이썬에서 언더스코어 (_)는 총 다섯가지 상황에서 사용된다.

 

- 인터프리터(Interpreter)에서 마지막 값을 저장할 때

- 값을 무시하고 싶을 때

- 변수나 함수명에 특별한 의미 또는 기능을 부여하고자 할 때

- 국제화/ 지역화 함수로써 사용할 때

- 숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용할 때

 

for _ in range는 2번재 경우로 값을 무시하고 싶을 떄 쓰는 경우이다. 

 

2. List comprehension 기능

== 조건 for in range()

numList=[]
for num in range(1,6):
    numList.append(num)
print(numList)
[1, 2, 3, 4, 5]

 

numList=[num for num in range(1,6)]
print(numList)

조건이 그냥 num 이므로 평소와 같다.

 

[1, 2, 3, 4, 5]
numList=[num*num for num in range(1,6)]
print(numList)

 

조건이 num*num이므로 제곱을 해주어야 함. 

1 4 9 16 25 가 출력된다.

 

[1, 4, 9, 16, 25]
numList=[num for num in range(1,21) if num % 3 == 0]
print(numList)

뒷줄에 조건이 붙었다.

num이 1,20 사이에 존재하고

3으로 나누어 떨어진 경우만 numList에 들어가게 됨

 

[3, 6, 9, 12, 15, 18]
list2 = [[0 for _ in range(4)] for _ in range(3)]
print(list2)

0 for_ in range(4)를 for in range(3)동안 해준다.

 

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]