알고리즘 - 로또의 최고 순위와 최저 순위

유준상·2021년 11월 20일
0
post-thumbnail

정답!!

func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
    var correct_count = 0
    var zero_count = 0

    for lotto in lottos {
        if lotto == 0 {
            zero_count += 1
            continue
        }
        for win_num in win_nums {
            if lotto == win_num {
                correct_count += 1
                break
            }
        }
    }
    return [calRank(correct: correct_count + zero_count),calRank(correct: correct_count)]
    
}

func calRank(correct: Int) -> Int {
    switch correct {
    case 6:
        return 1
    case 5:
        return 2
    case 4:
        return 3
    case 3:
        return 4
    case 2:
        return 5
    default:
        return 6
    }
}

맞춘 개수와 모르는 값인 0의 개수를 체크해 최고 순위, 최저 순위를 알아내는 문제였다.

최고 순위와 같은 경우 맞춘 개수와 0의 개수를 합친 값에 해당하게 되고, 최저 순위는 맞춘 개수만 등수로 변환하면 됐다...

근데 다른 분들의 코드를 보니 이렇게 간단할수가.. count의 경우 filter를 통해 충분히 값을 얻을 수 있었고 등수 계산 또한 규칙성을 통해 얻어낼 수 있었다!!! 알고리즘을 구현할때 이러한 값의 규칙성을 찾는 연습을 꾸준히 해야겠다..!!!

profile
iOS 개발이 즐거운 사람

0개의 댓글