문제
출처 : www.acmicpc.net/problem/3213
상근이의 친구들은 피자를 먹는데, 무조건 1/4, 3/4, 1/2크기만큼 먹을수있다.
이때, 상근이가 시켜야하는 최소한의 피자양을 구하는문제다.
(1/4 3/4 1/2 만큼의 조각을 나눠서 먹는것이 아닌, 한번에 먹어야한다 )
풀이
예제를 전부 더해보면 2가 나와서 2판만 시키면되는데, 출력은 3이나와서 뭔가했다...
알고보니 (번역본에는 안 나와있는데 본문에는 나와있음) 조각을 나눠서 먹으면 안되고 한번에 먹어야하는 조건이있었다.
(3/4를 먹을려면 무조건 3/4조각이 붙어있어야함)
각각 (1/2, 3/4, 1/4) 에 해당하는 덱을 3개 선언하고 해당 조각을 입력받을때마다 넣어준다.
(각각 deq1, deq2, deq3 이라 하자)
(num은 시켜야할 피자의 양이다.)
1. 1/4는 3/4와 합쳐져서 1이 된다.
deq2와 deq3을 한번씩 팝해주고 num++을 해준다
2. 1/4두개는 1/2와 합쳐져서 1이 된다.
deq2를 두번팝하고 deq1을 한번 팝해준후 num++을 해준다. 이때, deq2가 하나남았을때는 두번 팝할수없으므로, 한번만 팝하고 num++을 한후 종료한다.
3. 1/2는 1/2와 만나서 1이된다.
deq1을 두번팝하고 num++을 한다. 마찬가지로 deq1이 하나 남을경우가 있으므로, 이때는 한번만 팝하고 num++을 해준다.
남은 deq1 deq2 deq3을 계산해서 출력하면 정답이 나온다.
시간은 n이 최대 10000이므로 최대 10000번 돌고 끝난다.
소스코드
https://github.com/devxb/JJUNalgo/blob/master/3213%20%ED%94%BC%EC%9E%90/main.cpp
'알고리즘 (2020 : 08 : 10 ~ ) > 구현, 시뮬' 카테고리의 다른 글
[백준 / BOJ] 2872 우리집엔 도서관이 있어 (0) | 2020.11.06 |
---|---|
[백준 / BOJ] 2174 로봇 시뮬레이션 (0) | 2020.11.05 |
[백준 / BOJ] 8901 화학 제품 (0) | 2020.09.18 |
[백준 / BOJ] 15658 연산자 끼워넣기 (2) (0) | 2020.09.16 |
[백준 / BOJ] 12933 오리 (0) | 2020.09.11 |