10~11 (2439, 10871) 문제
2439 별찍기 -2
let caseNum = Int(readLine()!)!
var addStar:[String] = []
for i in 1...caseNum {
var addSpace:[String] = []
var desNum = caseNum
while desNum > i {
addSpace.append(" ")
desNum -= 1
}
addStar.append("*")
let result = addSpace.joined(separator: "") + addStar.joined(separator: "")
print(result)
}
이렇게 풀었는데..
훨씬 간결하게 작성한 사람이 있었다.
let n: Int = Int(readLine()!)!
for i in 1...n {
print(String(repeating: " ", count: n-i) + String(repeating: "*", count: i))
}
repeatig, count를 사용해서
단 세줄로 끝내버릴 수 있는 코드였다.
10871 X보다 작은 수
let input = readLine()!.split(separator: " ").map{Int($0)!}
let num = readLine()!.split(separator: " ").map{Int($0)!}
var result:[Int] = []
for i in 0...input[0]-1 {
if num[i] < input[1] {
result.append(num[i])
}
}
print(result.map{String($0)}.joined(separator: " "))
이렇게 작성했는데,
훨씬 짧은 코드를 사용한 사람이 있었다.
let a=readLine()!.split{$0==" "}.map{Int($0)!}
print(readLine()!.split{$0==" "}.map{Int($0)!}.filter{$0<a[1]}.map{String($0)}.joined(separator: " "))
이렇게 두 줄로 작성했는데,
.filter를 사용함으로써 IF문을 사용하지 않았고, 하나의 프린트 문 안에 모두 작성해서 코드가 훨씬 짧아졌다.
초보자의 눈으로 어떤 코드가 더 좋은건지 파악이 어렵다.
'Today I Learned' 카테고리의 다른 글
20210930 백준 swift - 1차원 배열 (0) | 2021.09.30 |
---|---|
20210831 백준 swift - while문 (0) | 2021.09.01 |
20210826~20210829 백준 swift - for문 -1 (0) | 2021.08.30 |
20210817~0825 swift full course (0) | 2021.08.26 |
20210814~20210816 백준 문제풀이 swift (사칙연산 곱셈, if문) (0) | 2021.08.17 |