Skip to content

Latest commit

 

History

History
34 lines (23 loc) · 1.45 KB

README.md

File metadata and controls

34 lines (23 loc) · 1.45 KB

문제풀이

자른 크기가 다른 피자 종류 2개로 2조각 이상일 경우에는 연속된 피자조각을 선택해서 고객이 원하는 크기의 피자를 판매하는 모든 경우의 수 구하기

입력

  • 첫째 줄 : 고객이 원하는 피자크기
  • 둘째 줄 : 피자A의 조각 개수 m, 피자B의 조각 개수 n
  • m개의 줄 : 피자 A의 각 조각의 크기
  • n개의 줄 : 피자 B의 각 조각의 크기

로직

[7, 2, 2, 2, 1] 크기의 피자가 있을 때 [7, 2, 2, 2, 1, 7, 2, 2, 2, 1] 원형구조를 선형구조로 만들고 [7, 9, 11, 13, 14, 21, 23, 25, 26] 와 같이 누적 합을 구하면 1에서 n조각까지 선택하는 경우의 수를 쉽게 구할 수 있다.

  • 1 조각이면 arr[n + 1] - arr[n]
    • [2, 2, 2, 1, 7]
  • 2 조각이면 arr[n + 2] - arr[n]
    • [4, 4, 3, 8, 9]
  • 3 조각이면 arr[n + 3] - arr[n]
    • [6, 5, 10, 10, 11]

피자마다 1개 부터 n개까지 고르는 모든 경우의 수에 대해서 크기별 횟수를 맵에 기록한다음 두 종류의 피자의 크기가 합쳐서 고객이 원하는 크기가 되는 경우의 수와 한 종류만 선택해서 되는 경우를 더한다.

맞왜틀

  • 35번 라인의 두 종류의 피자의 경우의 수를 구할 때 bCount.has(target - i)로 코드를 잘못써서 틀렸다
  • 두 종류의 피자의 경우의 수를 구할 때 이중 반복문을 사용해서 시간초과가 발생했다

다른 풀이 비교 및 리팩토링

  • 없음