문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
입출력예시
1차원 배열, 10871번: X보다 작은 수
앞 문제와 동일하게 배열을 입력받는다. 이후에 주어진 X보다 작은 수를 찾아 공백을 넣어 예쁘게 출력하는 문제이다.
나는 항상 코드를 신박하게 생각하지 못하기 때문에 원초적인 방법으로 풀어봤다.
*진행방법 요약* 1) N, X를 map기능을 이용해 입력받음(int형으로). 2) 수열(배열)을 split()기능을 활용해 리스트로 입력받음(string형). 3) 결과값(string)을 담을 변수 생성 4) 수열에 대해 for loop 진행 5) 수열에 담긴 값을 int형으로 변환해 X와 비교 6) 생성한 문자열에 조건에 맞는 값과 공백 입력 7) 결과값 변수 출력
N, X = map(int, input().split())
n_list = input().split() #요소를 문자로 받기
out = '' #출력할 빈 문자열 생성
for i in n_list:
if int(i) < X: #비교를 위해 i를 숫자로 변경
out = out + i + " " #생성된 out_list에 특정 요소와 구분을 위한 공백을 문자로 추가
print(out_list)
N, X = map(int, input().split())
n_list = input().split()
out = '' #출력할 빈 문자열 생성
for i in n_list:
if int(i) < X:
out += i
out += " "
print(out)
앞에서와는 다르게 문자열로 출력값을 만들지 않고 end 기능을 사용해 앞에서보다 멋진 코드를 작성하는 방법도 있다.
해당 방법을 사용해 코드를 작성하면 코드가 훨씬 간결해지고, 결과값을 담을 변수를 따로 만들지 않아도 된다는 장점이 있다. 그리고 훨씬 코드같아졌다..!
이때 배열 입력을 map기능에서 int로 받았기 때문에 if문에서 따로 i를 int로 변환해주지 않았다.
또한, 단순 print로 결과를 보여주기 때문에 문자의 형식도 크게 신경쓰지 않아도 된다.
*진행방법 요약* 1) N, X, 수열을 map기능을 이용해 입력받음(int형으로) 2) 수열에 대해 for loop 진행 5) 수열에 담긴 값을 int형으로 변환해 X와 비교 6) 생성한 문자열에 조건에 맞는 값과 공백 입력 7) 결과값 변수 출력
N, X = map(int, input().split())
n_list = map(int, input().split())
for i in n_list:
if i < X:
print(i, end = ' ') # i 출력 후 뒷부분을 \n(줄바꿈)이 아닌 공백으로 끝냄
앞에서 사용한 두가지 방법 모두 N을 사용하지 않았다.
출제자가 N을 줬으니 입력받은 모든 요소를 알차게 사용하는 방법도 알아보자!
N은 수열(배열)이 몇개의 정수로 이루어져 있는지 알려준다. 문제를 풀 때 for loop을 입력받은 배열의 모든 요소 대해 진행시켰다. 이 배열의 개수를 직접 for loop에 입력하는 방식을 사용해볼 수 있다.
이때는 range(N)에 대해 for loop을 진행하기 때문에 i를 그대로 사용하면 i는 0부터 N-1까지 출력된다. 따라서 리스트의 indexing 기능을 사용한다.
.split() 기능은 출력값이 리스트이기 때문에 아래 코드와 같이 []를 사용해 indexing을 하고, 이때 X와는 수 비교이기 때문에 int형식으로 만든다.
N, X = map(int, input().split())
n_list = input().split()
for i in range(N):
if int(n_list[i]) < X:
print(n_list[i], end = ' ')
end=
: print()기능의 설정 함수로 print한 값 뒤에 붙는 문자를 설정
- 사용 방법(형태)
print(출력내용, end = "")
_#기본값: end = "\n"(줄바꿈)- Ex.
print('안녕', end = "? ") print('오늘 뭐해', end = "?\n") print('이따 점심 뭐 먹을래', end = "~?") # output; 안녕? 오늘 뭐해? #이따 점심 뭐 먹을래~?
print('Today') #end 값을 입력하지 않으면 다음 print값은 줄바꿈 후 출력 print('Yesterday', end=',') print('tomorrow', end = '') print('.') # output; Today # output; Yesterday,tomorrow.
range()
: 연속된 숫자의 범위를 지정해주는 함수
input - 정수,
out - int형
- 사용 방법(형태)
range(start, stop, step)- Ex.
for i in range(3): print(i) #output; 0'\n'1'\n'2'\n'
저는 늘 N을 외면하고 살았습니다 ...
'짧은 코드를 위해서라면.. N이야 뭐.. 크게 중요한가?' 라는 생각으로요 ...
그런데 어제.. 제 꿈에서 N이 나타났지 뭐에요 ...
온 몸이 검은데 이마에 N이 써져있더라구요.. 초록색.. 네이버처럼요 ..
제게 울부짖더라구요.. 내가 안보이냐며.. 내가 우습냐며.. 너도 나처럼 되고 싶냐며 ..
그래서 앞으로는 N을 무시하지 않기로 했습니다.. 교회도 열심히 다닐 거구요 ..
랼류님도.. 절대 N을 무시하지 마세요.. 이걸 보는 여러분도 ..