Today I Learned

20210830 백준 swift - for문 -2

돌맹이시터 2021. 8. 31. 02:28

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문을 사용하지 않았고, 하나의 프린트 문 안에 모두 작성해서 코드가 훨씬 짧아졌다.

 

초보자의 눈으로 어떤 코드가 더 좋은건지 파악이 어렵다.