본문 바로가기

프로그래머스 (Swift)/기초

[Day7-2] 배열 만들기 2

문제

 

내 정답 코드

import Foundation

func solution(_ l:Int, _ r:Int) -> [Int] {
    var result:[Int] = []
    var bool = false
    
    for i in l...r {
        let num2String = String(i)
        for char in num2String {
            if char != "0" && char != "5" {
                bool = false
                break
            } else {
                bool = true
            }
        }
        if bool {
            result.append(i)
        }
    }
    if result.isEmpty {
        result.append(-1)
    }
    
    return result
}

 

#

1. String으로 바꾸고

2. 순회하며 0, 5가 아니라면 플래그의 값을 저장한다.
3. 플래그 값으로 append할 지 정한다.

 

@

플래그를 사용한 것과 코드가 지저분해 보인 것이 마음에 들지 않아 다시 짜보았다.

1. 2중 필터를 사용하는 과정에서 어려움을 겪어 다른 사람들의 풀이를 보며 해결하였다.

2. 특정한 조건으로 필터링하고 String값인 것을 이용해 조건에 맞지 않으면 isEmpty가 true인 것을 활용했는데 참신한 방법 같다.

import Foundation

func solution(_ l:Int, _ r:Int) -> [Int] {
    
    let result = (l...r).filter { String($0).filter { $0 != "0" && $0 != "5" }.isEmpty }
    
    return result.isEmpty ? [-1] : result
}

배운 기술

'프로그래머스 (Swift) > 기초' 카테고리의 다른 글

[Day7-4] 콜라츠 수열 만들기  (0) 2024.02.17
[Day7-3] 카운트 업  (0) 2024.02.17
[Day7-1] 수열과 구간 쿼리4  (0) 2024.02.15
[Day6-5] 수열과 구간 쿼리2  (1) 2024.02.10
[Day6-4] 수열과 구간 쿼리 3  (0) 2024.02.09