https://www.acmicpc.net/problem/10871
# 문제상황 1
백준 단계별로 풀어보기를 순서대로 풀어보고 있는 사람들이라면 아마 이 문제에서 처음으로 '수열'을 입력받는 방법에 대해 고민하셨을겁니다. 그동안은 많아봐야 연속된('띄어쓰기'로 구분된) 2개의 수를 입력받는 문제들만 있었죠. 그런 문제상황에서는,
a, b = map(int, input().split())
위와 같은 코드를 구현하면 됐었습니다.
하지만 아래 예시입력과 같이 연속된 3개 이상의 여러 개의 숫자들을 입력받으려면 어떻게 해야할까요?
# 해결 1
파이썬에서 제공하는 '리스트'를 사용합니다. 리스트는 여러 개의 값들을 효율적으로 저장할 수 있는 자료형입니다. 기존에 자주 사용했던 'map(int, input().split())' 코드를 리스트화 해 줄 'list()' 함수로 감싸줌으로써 문제를 해결할 수 있습니다.
A = list(map(int, input().split()))
즉 변수 A에는 입력받은 숫자들이 저장되어 있는 리스트가 저장됩니다.
# 문제상황 2
파이썬의 출력함수인 print()를 한 번 실행되고나면 자동으로 줄바꿈이 일어납니다. 즉 다음과 같이 a, b, c를 실행한다면,
print('a')
print('b')
print('c')
위 코드의 결과는 아래와 같이 출력되는 것이죠.
a
b
c
하지만 이번 문제의 예시출력을 보면 다음과 같이, 숫자들을 줄바꿈 없이 띄어쓰기로 구분하여 한 줄로 출력해야합니다. print()를 사용하면 자동 줄바꿈이 일어나는데 어떻게 해야할까요?
# 해결 2
print() 함수의 사용법을 더 깊이 있게 알 필요가 있습니다. print() 함수에는 숨은 매개변수 end가 있습니다. 매개변수 end는 print()로 출력할 값의 맨 끝에 붙이고 싶은 문자를 지정해주는 역할을 합니다. 예를 들자면,
print("메롱", end='~')
위와 같은 코드는 아래와 같이 출력됩니다.
메롱~
평상시에는 end에 디폴트 값으로 줄바꿈 문자 '\n'이 들어가기 때문에, end값을 딱히 명시하지 않고 사용하면 줄바꿈이 자동으로 발생했던 것입니다. 매개변수 end를 잘 이용하면 print()가 수행될 때마다 줄바꿈 없이 숫자들을 띄어쓰기로 구분하여 출력할 수 있을 것입니다.
# 답
n, x = map(int, input().split())
A = list(map(int, input().split()))
for i in A:
if i < x:
print(i, end=' ')
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 4344번 "평균은 넘겠지" (0) | 2022.04.19 |
---|---|
(파이썬) 백준 2562번 "최댓값" (0) | 2022.04.19 |
(파이썬) 백준 11021번 "A + B - 7" (0) | 2022.04.18 |
(파이썬) 백준 2742번 "기찍 N" (0) | 2022.04.17 |
(파이썬) 백준 15552번 "빠른 A + B" (0) | 2022.04.17 |