카테고리 없음

백준 10871번 파이썬

abccoco 2022. 8. 2. 21:40

문제

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

입력

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

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

출력

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


이 문제는 join() 함수를 사용할 수 있어야 한다. 함께 풀어보자!

정답 코드

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

low_num=[]
for num in A:
    if num < X:
        low_num.append(str(num))

print(' '.join(low_num))

 

코드의 첫줄은 예제 입력에 맞추어 input() 함수를 사용해 준다.

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

 

이 문제에서는 list 로 만들어진 숫자들 중에 X 보다 작은 숫자들을 출력해 주어야 하기 때문에

각각의 숫자를 비교하도록 for문을 사용했고 비교해 X 보다 작은 숫자들을 담을 low_list 라는 변수를 만들어 append 해 주었다.

그런데 num 변수를 str 으로 바꾸어 주었는데 그 이유는? 바로 join() 함수에는 int가 아닌 str이 들어가야 하기 때문이다.

low_num=[]
for num in A:
    if num < X:
        low_num.append(str(num))

 

마지막으로 join() 함수를 사용해 print() 를 해주면 된다.

join() 함수는 () 안에 list를 넣어주면 각각의 str 들을 뽑아주는 역할을 한다.

그리고 ' '는 그 변수들의 사이에 무엇을 넣을지 정해주는 것이다.

만약 'aaa'.join(low_num) 을 해주면 low_num 안의 str 사이사이에 aaa가 들어가 출력하게 된다.

print(' '.join(low_num))