BOJ

백준 파이썬 10818 최소, 최대

Coding_SJ 2020. 3. 17. 22:21

 

 

 

 

 

 

 

 

 

내 풀이

1
2
3
4
5
= int(input())
= [0 for i in range(n)]
= list(map(int,input().split()))
print(min(A), max(A))
 
cs

 

가로로 입력해야할 때, a,b,c,d,e=list(map(int,input().split())) 이렇게 하기 싫고,

 

실력도 안 늘 것이며 분명히 편한 방법이 존재할 거라고 생각했기 때문에, 고민하고 찾아다녔다.

 

고민한 결과, 가로로 많은 수를 입력해야 하는 경우에는 변수를 하나하나 다 선언하기 보다는

 

입력 개수와 같은 크기의 배열(전부 0넣은 배열)을 선언해주고 다시 입력해주면 된다는 걸 깨달았다.

 

 

그리고 map(int,input().split())) 이렇게 받았을때는 map안의 원소가 일회용인 것 같았다.

한번 출력하고나면 그 배열 안의 원소가 다 사라져버리는 방식이 아닐까?

min하고나서 max하려니까 원소가 없다고 나오던데..

 

 

 

 

 

고인물식 풀이

1
2
3
input()
*a,=map(int,input().split())
print(min(a),max(a))
 

*a,=map( 이렇게 선언하면 a가 배열이 되는건가?

*자체가 배열을 벗기는 작업인데 이런 형식을 쓰려면 반점(,)를 써야되는건가.

 

 

 

 

 

 

https://mingrammer.com/understanding-the-asterisk-of-python/

찾아보니까 여기에 파이썬의 Asterisk(*)에 대한 설명이 있었다.

 

numbers = [123456]

 

# unpacking의 좌변은 리스트 또는 튜플의 형태를 가져야하므로 단일 unpacking의 경우 *a가 아닌 *a,를 사용

*a, = numbers

# a = [1, 2, 3, 4, 5, 6]

 

*a, b = numbers

# a = [1, 2, 3, 4, 5]

# b = 6

 

a, *b, = numbers

# a = 1

# b = [2, 3, 4, 5, 6]

 

a, *b, c = numbers

# a = 1

# b = [2, 3, 4, 5]

# c = 6

 

 

음.. 그래서 

*a, = map ( int,input().split() )

이렇게 선언을 해도 a가 입력한 것들의 배열이 된다는 것이구나.

 

 

 

 

 

 

 

다른 풀이

1
2
3
input()
A=sorted(map(int, input().split()))
print(A[0], A[-1])
cs

이 분은, 이 문제가 최댓값 최솟값을 물어보는 것에 착안해서,

 

입력받은 배열을 처음부터 오름차순으로 정리한다음 첫번째원소(최솟값), 마지막원소(최댓값)을 추출했다.

 

마지막원소는 -1인덱스를 가지는것도 유용하게 쓰도록하자.