[BOJ] 개업 13910번 C++

2025. 2. 18. 16:27· Algorithm

 

 

문제

해빈이는 짜장면을 정말 좋아한다. 짜장면을 너무 좋아한 나머지 짜장면만 파는 중국집을 개업했다! 해빈이는 양손잡이여서 동시에 두 개의 웍(중국 냄비)을 사용하여 요리할 수 있다. 그러나 해빈이는 낭비를 매우 싫어하기 때문에 요리 할 때, 필요 이상 크기의 웍을 사용하지 않으며, 주문 받은 짜장면의 그릇 수에 딱 맞게 요리한다.

<웍>

예를 들어 짜장면 4그릇을 주문 받았는데 5그릇 이상을 요리하지 않으며, 4그릇을 요리할 수 있는 웍에 3그릇 이하의 요리를 하지 않는다.

해빈이가 5그릇을 주문 받았고, 해빈이가 가지고 있는 웍의 종류가 1, 3그릇 용이라면 처음에 1,3그릇용 웍을 동시에 이용하여 4그릇을 만들고 다음 1그릇용 웍을 이용하여 1그릇을 만들어 총 5그릇을 두 번의 요리로 만들 수 있다.

해빈이가 주문 받은 짜장면의 수와 가지고 있는 웍의 크기가 주어질 때, 최소 몇 번의 요리로 모든 주문을 처리할 수 있는지 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에는 해빈이가 주문 받은 짜장면의 수N(1≤N≤10,000)과 가지고 있는 웍의 개수 M(1≤M≤100)이 주어진다. 두 번째 줄에는 웍의 크기 Si(1≤Si≤N)이 M개가 주어지며 같은 크기의 웍을 여러 개 가지고 있을 수 있다.

출력

해빈이가 모든 주문을 처리하기 위해 해야 하는 최소 요리 횟수를 출력한다. 만약 모든 주문을 처리 할 수 없는 경우 -1을 출력한다.

 

접근 방식

 

dp[i]를 i개의 짜장면을 만드는 최소 요리 횟수로 정의한다

이때, 혜빈이는 손이 두개로 웍을 최대 2개까지 동시에 요리할 수 있다

따라서, 웍 하나를 사용한다면 dp[i-S]+1

웍 두개를 동시에 사용한다면 dp[i-(S1+S2)] +1을  비교해서 최소값을 갱신하면 된다!

 

 

코드

#include<bits/stdc++.h>
using namespace std;
int dp[100003];
constexpr int INF = 1e9;
int main() {
    int N,M; cin>>N>>M;
    vector<int> v(M);
    for(int i=0; i<M; i++) {
        cin>>v[i];
    }

    fill(dp, dp+N+1, INF);
    dp[0] = 0;

    for(int i=0; i<M; i++) {
        for(int j=v[i]; j<=N; j++) {
            dp[j] = min(dp[j], dp[j-v[i]]+1);
        }
    }

    for(int i=0; i<M; i++) {
        for(int j=i+1; j<M; j++) {
            int sum = v[i] + v[j];
            if(sum <= N){
                for(int k=sum; k<=N; k++) dp[k] = min(dp[k], dp[k-sum]+1);
            }
        }
    }

    if(dp[N]==INF) cout<<-1;
    else cout<<dp[N];
    
}

'Algorithm' 카테고리의 다른 글

[BOJ] 우유 도시 14722번 C++  (1) 2025.02.26
[BOJ] 1,2,3 더하기 4 15989번 C++  (0) 2025.02.25
[BOJ] 암호코드 2011번 C++  (0) 2025.02.18
[BOJ] 카드 구매하기 2 16194번 C++  (2) 2025.02.14
[BOJ] 회의실 배경 3 19622번 C++  (0) 2025.02.11
'Algorithm' 카테고리의 다른 글
  • [BOJ] 우유 도시 14722번 C++
  • [BOJ] 1,2,3 더하기 4 15989번 C++
  • [BOJ] 암호코드 2011번 C++
  • [BOJ] 카드 구매하기 2 16194번 C++
따봉치치
따봉치치
따봉치치
김치치의개발블로그
따봉치치
전체
오늘
어제
  • 분류 전체보기 (359)
    • 면접질문 (4)
    • CS (50)
    • FE (116)
      • Javascipt (16)
      • Typescipt (6)
      • React (16)
      • CSS (5)
      • Nextjs (1)
      • 리뷰 (70)
    • Algorithm (181)
    • ETC (3)
      • Bootcamp (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우선순위 큐
  • Stack
  • Greedy
  • typescript
  • 모던 리액트 딥다이브
  • BFS
  • TOPCIT
  • BOJ
  • 백준
  • 알고리즘
  • 문자열
  • CS
  • javascript
  • 탐욕 알고리즘
  • 누적합
  • react
  • 데이터베이스
  • 완전탐색
  • Fe
  • C++
  • 리액트
  • 백트래킹
  • 그래프 탐색
  • 그리디
  • 투 포인터
  • 모던 자바스크립트 딥다이브
  • 자료구조
  • 스택
  • 자바스크립트
  • dp

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
따봉치치
[BOJ] 개업 13910번 C++
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.