티스토리 뷰

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120887

 

문제 사진

 

내 풀이

import Foundation

func solution(_ i:Int, _ j:Int, _ k:Int) -> Int {
    return Array(i...j).flatMap { String($0).compactMap { Int(String($0)) } }.filter { $0 == k }.count
}

solution(1, 13, 1)

 

1. i ~ j 까지의 숫자를 배열로 만든다.

2. 그 사이 요소들중 10의자리 수 이상인 요소들을 분리 시킨다. 

flatMap { String($0).compactMap { Int(String($0)) } }

예) 32 → 3, 2    /    19 → 1, 9

 

3.  마지막으로 다 분리 된 숫자들을 filter를 사용하여 k와 같은 숫자를 걸러낸 후 갯수를 줍줍한다.

같은 숫자만 줍줍

다른사람의 풀이

import Foundation

func solution(_ i:Int, _ j:Int, _ k:Int) -> Int {
    var answer = 0
    for n in i...j {
        answer += String(n).map{ String($0) }.filter{ $0 == String(k) }.count
    }
    return answer
}

 

요즘 최대한 for문을 안써보려고 하는데 복습하는데 좋을것 같아 가지고 와 봤다.

728x90