Study/Baekjoon

[Python] 백준 10871번 X보다 작은 수 | *, join

yeorii 2023. 3. 13. 00:09

# 10871. X보다 작은 수

 

 

 

X보다 작은 수
 

문제

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

출력

X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

예제 입력 1 복사

10 5
1 10 4 9 2 3 8 5 7 6

예제 출력 1 복사

1 4 2 3

내 풀이

N, X = map(int, input().split())

arr = list(map(int, input().split()))

ans = []
for i in arr :
    if i<X:
        ans.append(i)
print(*ans)

print(ans)로 하[1, 4, 2, 3] 이렇게 나오는데,

1 4 2 3 이렇게 나오게 하려면 `print(*list)` 이렇게 *을 붙여줘야 한다.

Python에서 *의 기능은 아래에 정리해두겠음!

정답

n, x = map(int, input().split())
answer = ' '.join([i for i in input().split() if int(i) < x])
print(answer, end='')

 


 

Python에서의 *(Asterisk)

1. Unpacking

arr = [1,2,3,4,5]

print(arr)
[1, 2, 3, 4, 5]

print(*arr)
1 2 3 4 5

list나 tuple, dictionary(key) 안에 있던 데이터들을 풀어서 출력해준다.

2. 가변인자 *arg, **kwargs

얜 나중에 정리할 예정 ~

'구분자'.join(list)

  • ''.join(list) : [a, b, c, d, e] ➡️ abcde
  • ' '.join(list) : [a, b, c, d, e] ➡️ a b c d e

join() 메서드는 문자열을 연결하는 메서드이기 때문에, 정수형(int)을 바로 이용해서는 사용할 수 없다.

따라서, 정수형을 문자열로 변환한 후에 join() 메서드를 사용해야 한다. 

 

  • ''.join (list) : [1, 2, 3, 4, 5] ➡️ 12345
  • ' '.join (list) : [1, 2, 3, 4, 5] ➡️ 1 2  3 4 5
  • 위와 같이 하면 오류가 난다!
  • map(int, list)를 활용해서 정수형 리스트를 문자열 리스트로 바꿔주어야 한다.
''.join(list(map(str, list)))
  • 이런 식으로!!!!!!