백준에서 항상 swift로 풀때마다 시간초과가 문제인게 화난다. 🤬
실버 5 문제임에도 불구하고 Swift특성상 잘 풀리지 않는다.
Swift ver 파일입출력을 도입함에도 불구하고 시간초과가 나서 이 문제를 푼 사람을 찾다가 신기한 for문함수와 String 옵션을 발견했다.
나도 거의 비슷했지만 for문을 쓰는 방식이 달랐다
//내 코드
for i in 0..<arr.count {
if arr[i] == 0 {
continue
}
for _ in 0..<arr[i] {
result += String(i+1)+"\n"
}
}
//이 분의 코드
for i in 0..<arr.count where arr[i] > 0{
result.write(String(repeating: "\(i+1)\n", count: arr[i]))
}
처음 발견한 것 2가지가 있는데
내가 해당 인덱스의 값을 체크하고 넘어가는 방식대신에 이 분은 where 절을 이용해서 구현했다. 신기해서 나도 사용해보았다. 하지만 시간초과ㅜㅜ 그래도 이 방식을 앞으로 쓰면 코드가 더 간결해지겠다는 생각이 들었다.
이 문제는 해당 값만큼 for문을 돌려서 해당 index를 출력해야 하는데 내가 한 방식은 2중 for문 이지만 이 분은 String 함수(?)를 이용해서 한번에 구현했다.
결과는 성공!!
이런 문제들을 처음에는 영양가가 없다고 생각도 했지만 이 문제를 풀며 놀라운 두가지를 알아서 기부니가 좋았다. 앞으로 자주 써먹어야겠다