[백준]10871 X보다 작은 수

sun_U·2022년 8월 11일
0
post-thumbnail

문제 | X보다 작은 수

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

입력

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

출력

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


내가 푼 코드1 (틀림)

import sys
n, x = map(int,sys.stdin.readline().rstrip().split())
nums = map(int, sys.stdin.readline().rstrip().split())

n_list = [num for num in nums if num < x]

output = ""
for i in n_list:
    output+=str(i)
print(" ".join(output))

너무 복잡하게 생각했다.
split()을 통해 수열을 리스트로 만들고,
리스트에서 x보다 작은 수를 다시 리스트로 만들어 담았다.
그 다음 빈문자열을 만들고 x보다 작은 수를 담은 리스트 각각의 수를 문자로 만들어 합친 후 join()을 통해 공백을 넣었다.

내가 푼 코드2 (에러)

import sys
n, x = map(int, sys.stdin.readline().rstrip().split())
nums = map(int, sys.stdin.readline().rstrip().split())

for i in range(len(nums)):
    if nums[i] < x:
        print(nums[i], end = " ")

TypeError: 'map' object is not subscriptable

map() 함수에 대한 이해가 부족했다.
타입을 확인해보니 list가 아닌 map으로 나왔다.
그래서 map을 list()를 사용해 형 변환을 했다.

최종 코드

import sys
n, x = map(int,sys.stdin.readline().rstrip().split())
nums = list(map(int, sys.stdin.readline().rstrip().split()))

for i in range(len(nums)):
    if nums[i] < x:
        print(nums[i], end = " ")

파이썬 기초는 한다고 생각했었는데 배우기만 하고 스스로 연습을 하지 않으니까 여전히 제자리 걸음을 하고 있었다.
아직 갈 길이 멀지만 이제라도 꾸준히 공부해야지🤣

profile
Data Engineer🐣

0개의 댓글