💬 문제
https://school.programmers.co.kr/learn/courses/30/lessons/131130?language=swift
💬 Idea
- cardDict에
순서 - 카드 숫자를 저장해놓는다. - 이후 첫번째 key부터 그룹지을 수 있는 만큼 (해당 숫자가 열려있을 때까지) 반복하면서 각 그룹을 찾아 ans에 그 개수를 저장한다.
- ans를 내림차순 정렬한 뒤
- 그룹 개수가 2개 이상이라면 최댓값, 그다음 최댓값을 곱한 숫자를 return한다
- 그룹 개수가 2개 미만이라면 0을 return한다.
💬 풀이
import Foundation
func solution(_ cards:[Int])->Int{varcardDict:[Int:Int]=[:]for(idx, i)in cards.enumerated(){cardDict[idx +1]= i
}varans:[Int]=[]func cycle(_ start:Int)->Int{varqueue:[Int]=[]varstart= start
whilecardDict[start]!=nil{letnext=cardDict[start]!
queue.append(start)
cardDict.removeValue(forKey: start)
start = next
}return queue.count
}while !cardDict.isEmpty {
ans.append(cycle(cardDict.keys.first!))}
ans = ans.sorted(by:>)return ans.count >=2?ans[0]* ans[1]:0}
💬 문제https://school.programmers.co.kr/learn/courses/30/lessons/131130?language=swift
💬 Idea순서 - 카드 숫자를 저장해놓는다.💬 풀이