백준 10871번 - X보다 작은 수

이설군·2022년 6월 20일
0

백준

목록 보기
18/52

문제

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

입력

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

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

출력

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

예제 입력 1

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

예제 출력 1

1 4 2 3

제출

맞은 제출 1

let i = readLine()!.split{$0==" "}.map{Int($0)!}
let n = i[0]
let x = i[1]
let A = readLine()!.split{$0==" "}.map{Int($0)!}

for j in 0...(n-1) {
	if A[j]<x {
    	print("\(A[j])", terminator: " ")
    }
}

오답노트

틀린 제출 1

let i = readLine()!.split{$0==" "}.map{Int($0)!}
let n = i[0]
let x = i[1]
let A = readLine()!.split{$0==" "}.map{Int($0)!}

for j in 0...(n-1) {
	if A[j]<x {
    	print("\(A[j])", terminator=" ")
    }
}

헛갈리는 부분이 있어서 swift를 켜두고 풀었던 문제였다. (보통은 연습을 위해 메모장에 적는다.)
인텔맥의 설정이 제대로 되지 않아 readLine대신 '[값,값,값]' 이런식으로 직접 값을 넣어서 문제를 풀었는데. 당시에는 됐다. 응...swift에서는 됐어...
그래서 넣었는데. 알고보니 타이핑 도중 terminator: " "인데 terminator=" "으로 적어서 틀린것이었다. split함수를 split(separator: " ")이 아닌 split{$0==" "}이런식으로 쓰다보니 :와 =을 헛갈린 것이었다.
separator: " "
terminator: " "
좀더 영어에 익숙해보자.

숏코딩

숏코딩 예제 1

let i=Int(readLine()!.split{$0==" "}[1])!,p=readLine()!.split{$0==" "}.map{Int($0)!};print(p.filter{$0<i}.map{String($0)}.joined(separator:" "))

아직 배우지 않은 부분이지만,
함수명.filter를 통해 i보다 작은 값을 필터링 하고
함수명.joined을 통해 정렬해준것같다.
그와중에 함수명 map으로 바꿔준 이유는 joined이라는 함수가 string인 경우만 되서 인가라는 추측정도를 해보았다.ㅎㅎ

숏코딩 예제 2

let num = readLine()!.split(separator: " ").map { Int($0)! }
let intArray = readLine()!.split(separator: " ").filter { Int($0)! < num[1] }
for i in intArray{
    print(i)
}

filter를 사용한것까지는 똑같지만 map과 joined을 사용하지 않은 숏코딩이다.
배열을 넣을수 있다는걸 다시한번 알려준 코딩 ㅎㅎ 이렇게 하는 방법두 있구나! 멋져!

profile
티끌 모아 태산. 내가 가는 길이 옳은 길이라 믿으며 최선을 다해 걷는다.

0개의 댓글