정수 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
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: " ")
}
}
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: " "
좀더 영어에 익숙해보자.
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인 경우만 되서 인가라는 추측정도를 해보았다.ㅎㅎ
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을 사용하지 않은 숏코딩이다.
배열을 넣을수 있다는걸 다시한번 알려준 코딩 ㅎㅎ 이렇게 하는 방법두 있구나! 멋져!