Skip to content

Latest commit

 

History

History

2632

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

문제풀이

자른 크기가 다른 피자 종류 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)로 코드를 잘못써서 틀렸다
  • 두 종류의 피자의 경우의 수를 구할 때 이중 반복문을 사용해서 시간초과가 발생했다

다른 풀이 비교 및 리팩토링

  • 없음