369게임

Hisop·2022년 11월 4일
0

받은 Int값에 3,6,9가 몇개 들어있지 찾는 간단한 과제였다. 내 코드도 문제는 없었지만 다른 사람은 고차함수 여러개를 조합해 한줄로 풀어냈다.

func solution(_ order:Int) -> Int {
    var temp:String = String(order)
    var result = 0
    for val in temp
    {
        if val == "3" || val == "6" || val == "9"
        {
            result += 1
        }
    }
    return result
}

해당 문자가 몇 개 들어있는지 확인하는 과제였으므로 당연하게도 Int->String으로 변경한 후 for문과 if를 통해 몇개가 들어있는지 카운팅해주는 코드로 만들었다

func solution(_ order:Int) -> Int {
    return String(order).filter { "369".contains($0) }.count
}

다른 사람의 코드. 나처럼 temp를 선언할 필요가 없었다.
String으로 변환하고, contains메서드와 조합해 "369"중 하나라도 포함되었는지 확인.
filter는 이 bool값을 통해 필요한 값들만 복사한 배열을 받았다.
이후 배열을 통째로 리턴해버리는것이 아니라 count로 총 배열의 요소가 몇 개인지 확인해 리턴한다.

같은 논리지만 한줄로 정리할 수 있던 코드였음을 확인했다.

profile
42seoul - C, C++ / YagomAcademy - Swift

0개의 댓글