티스토리 뷰

문제

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
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함