코딩/백준
#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]]