본문 바로가기
Coding Test

Progammers.로또의 최고 순위와 최저 순위 (Swift)

by iOS_woo 2022. 3. 28.

문제 

https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

문제 풀이

import Foundation

func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {

    let zeroCount = lottos.filter { $0 == 0}.count
    let winCount = win_nums.filter { lottos.contains($0) }.count


    return [min(7-winCount-zeroCount,6), min(7-winCount,6)]
}

 

코드 설명

1. .filter {}

filter는 단어 뜻 그대로 내부의 값들을 걸러서 추출하는 역할을 합니다.

let x = [10, 3, 20, 15, 4]
var filtered = x.filter { $0 > 5 }.sorted() // 10 15 20

2. .contains()

contains 함수는 특정 문자 포함여부를 Boolean 값으로 리턴해주는 함수이다.

이 함수는 문자열에서도 사용할 수 있고, 배열에서도 사용할 수 있다.

 

3. min()

값을 비교해 최소값을 리턴해주는 함수이다. 

 

소감

어떻게 풀어야 할지 감은 왔지만 코드로 표현에서 막혔던 문제이다. 

검색을 통해 다른 사람이 쓴 코드를 보고 함수들을 따로 공부하면서 배울 수 있었다. 

 

 

참고: 
https://minosaekki.tistory.com/21

 

Swift - map,filter,reduce(고차함수)란 무엇일까?

저번 시간에 정리하였던 클로저에 이어서 이번에는 고차함수에 대해 정리해보도록 하겠습니다! 요즘 알고리즘 문제들을 풀고 있는데 문제를 풀다 보면 고차함수를 유용하게 사용할 때가 많아

minosaekki.tistory.com

https://zeunny.tistory.com/44

 

[Swift] 문자열이나 배열에 특정 문자가 포함돼있는지 확인하기

[Swift] 문자열이나 배열에 특정 문자가 포함돼있는지 확인하기 contains(_:) 스위프트에서 문자열이나 배열에 특정 문자가 포함돼있는지 알아보기 위해서는 contains 함수를 사용하면 된다. contains 함

zeunny.tistory.com

https://0urtrees.tistory.com/240

 

swift filter, min 함수 예제, 제일작은수 제거하기 풀이

프로그래머스 제일작은수 제거하기 문제링크 ▼ 코딩테스트 연습 - 제일 작은 수 제거하기 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.

0urtrees.tistory.com

 

댓글