백준 Swift 시간초과를 줄이는 두 가지 방법(for_where, String func)

Jackson·2021년 8월 12일
0

Swift 백준뽀개기

목록 보기
1/6
post-thumbnail

백준에서 항상 swift로 풀때마다 시간초과가 문제인게 화난다. 🤬
실버 5 문제임에도 불구하고 Swift특성상 잘 풀리지 않는다.
Swift ver 파일입출력을 도입함에도 불구하고 시간초과가 나서 이 문제를 푼 사람을 찾다가 신기한 for문함수와 String 옵션을 발견했다.

수 정렬하기3 풀이

나도 거의 비슷했지만 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가지가 있는데

1번째 for 문 + where

내가 해당 인덱스의 값을 체크하고 넘어가는 방식대신에 이 분은 where 절을 이용해서 구현했다. 신기해서 나도 사용해보았다. 하지만 시간초과ㅜㅜ 그래도 이 방식을 앞으로 쓰면 코드가 더 간결해지겠다는 생각이 들었다.

2번째 String(repeating: String, count: Int)

이 문제는 해당 값만큼 for문을 돌려서 해당 index를 출력해야 하는데 내가 한 방식은 2중 for문 이지만 이 분은 String 함수(?)를 이용해서 한번에 구현했다.

결과는 성공!!

이런 문제들을 처음에는 영양가가 없다고 생각도 했지만 이 문제를 풀며 놀라운 두가지를 알아서 기부니가 좋았다. 앞으로 자주 써먹어야겠다

0개의 댓글