처음 풀어보는 프로그래머스 문제. 지문은 길지만 간단한 문제였다. 낙서된 숫자의 개수와 맞힌 숫자의 개수를 파악해 가능한 최고 등수와 최저 등수를 알아내면 된다. 즉 0이 3개일때, 맞힌 숫자가 1개일때는 0이 모두 맞췄을때와 맞힌숫자가 1개 이므로 총 4개의 숫자를 맞힌게 되니 3등이 되고, 최저는 0이 모두 틀렸다고 가정하게 1개만 맞춘것이므로 6등이 된다.
func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
//0의 개수+맞은 번호 개수
var max = lottos.filter{(i:Int)in i==0}.count + lottos.filter{(i:Int)in win_nums.contains(i)}.count
if 7-max>6 {
max = 6
}else{
max = 7-max
}
//맞은 번호의 개수
var min = lottos.filter{(i:Int)in win_nums.contains(i)}.count
if 7-min>6 {
min = 6
}else{
min = 7-min
}
return [max,min]
}
로또 번호 생성 함수를 추가해 풀이를 하였다.
//로또번호 생성
func makeLottoNum()->[Int]{
var randomNum = 45
var nResult:[Int] = []
var list = Array(1...45)
for _ in 1...6{
var randomNum = Int(arc4random_uniform(UInt32(randomNum)))
nResult.append(list[randomNum])
list[randomNum] = list.last!
randomNum -= 1
}
print(nResult)
return nResult
}
//민우의 로또번호
func minwooNum()->[Int]{
var randomNum = 45
var nResult:[Int] = []
var list = Array(1...45)
for _ in 1...6{
var randomNum = Int(arc4random_uniform(UInt32(randomNum)))
nResult.append(list[randomNum])
list[randomNum] = list.last!
randomNum -= 1
}
for item in 0...Int(arc4random_uniform(UInt32(5))) {
nResult[item] = 0
}
print(nResult)
return nResult
}
func solution(_ lottos:[Int], _ win_nums:[Int]) -> [Int] {
//0의 개수+맞은 번호 개수
var max = lottos.filter{(i:Int)in i==0}.count + lottos.filter{(i:Int)in win_nums.contains(i)}.count
if 7-max>6 {
max = 6
}else{
max = 7-max
}
//맞은 번호의 개수
var min = lottos.filter{(i:Int)in win_nums.contains(i)}.count
if 7-min>6 {
min = 6
}else{
min = 7-min
}
return [max,min]
}
print(solution([1,1,1,1,1,1], makeLottoNum()))
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 기능개발(Swift) (0) | 2021.09.14 |
---|---|
프로그래머스 : 베스트 앨범(Swift) (0) | 2021.09.13 |
프로그래머스 : 위장(Swift) (0) | 2021.09.11 |
프로그래머스: 전화번호 목록(Swift) (0) | 2021.09.10 |
프로그래머스: 완주하지 못한 선수(Java, Swift) (0) | 2021.09.05 |