티스토리 뷰
문제
https://school.programmers.co.kr/learn/courses/30/lessons/132265
풀이
- 입력값의 개수의 최대치가 백만개 이므로 반복문을 중첩하면 시간초과가 발생한다
- 중요한것은 토핑의 종류이기 때문에 종류에만 집중한다
전체코드
import Foundation
func solution(_ topping:[Int]) -> Int {
var result: Int = 0
var ADic: [Int:Int] = [:] // 토핑의종류:개수 - 처음에 A에는 토핑이 없기 때문에 빈 딕셔너리
var BDic: [Int:Int] = [:] // 토핑의종류:개수
// 처음엔 topping이 전부 들어있음
topping.forEach{ BDic[$0, default: 0] += 1 }
for topp in topping {
ADic[topp, default: 0] += 1
if BDic[topp] == 1 { BDic[topp] = nil } // B에 토핑이 1개면 토핑 종류에서 삭제
else { BDic[topp]! -= 1 }
//A에 담긴 종류와 B에 담긴 종류를 비교
if ADic.count == BDic.count { result += 1 }
}
return result
}'PS > 문제 풀이' 카테고리의 다른 글
| [프로그래머스/Swift] 84512번 - 모음사전 (0) | 2025.02.06 |
|---|---|
| [프로그래머스/Swift] 49994번 - 방문길이 (0) | 2025.02.05 |
| [프로그래머스/Swift] 17677번 - [1차] 뉴스 클러스터링 (0) | 2025.02.03 |
| [프로그래머스/Swift] 43165번 - 타켓 넘버 (0) | 2025.02.02 |
| [프로그래머스/Swift] 42587번 - 프로세스 (0) | 2025.02.01 |
