G Y U L O G

백준 알고리즘 규코드

문제

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

입력

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

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

출력

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

예제 입력

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

예제 출력

1 4 2 3

규코드

1
2
3
4
5
6
7
listSize, aim = map(int, input().split())
 
makeList = list(map(int, input().split()))
 
for i in range(listSize):
    if makeList[i] < aim:
        print(makeList[i], end=' ')
cs

이 문제에서 애매한 부분은 입력값을 제대로 정해주지 않았다는 겁니다.

둘째 줄에 수열 A를 이루는 정수 N을 랜덤함수로 주는 지, 직접 N개 만큼 입력해주는 지 정해져 있지 않기 때문입니다.

예제 입력에서 10개를 손으로 써놨지만 오히려 코딩 경험이 있는 사람이라면 수열을 랜덤함수로 만들라는 의미로 받아들일 지도 모릅니다.

 

map() 함수를 이용해 값을 받아줍니다.

1
2
list(map(int, input().split()))
 
cs

이 부분으로 한 번에 설명하겠습니다. list()로 리스트를 만드는데 map()함수를 이용해 정수타입으로 형변환하여 공백을 구분해 받아줍니다.

 

split()함수가 공백을 쉼표로 인식합니다.

 

출력 부분에서는 print의 내부기능을 이용해 end= 를 사용합니다.

1
2
end=' '
end=''
cs

첫번째의 경우에는 한칸씩 띄워지면서 값이 출력됩니다. end를 사용하면 print함수에 적용되어있는 자동개행을 막아줄 수 있습니다. 

 

"댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"

공유하기

facebook twitter kakaoTalk kakaostory naver band