반응형
문제
15311번: 약 팔기
첫 번째 줄에 동규의 최대 약 요구량을 나타내는 정수 N ($=1\, 000\, 000$) 이 주어진다.
www.acmicpc.net
풀이
이 문제가 스페셜 저지라는 문제를 알게 되면, 굉장히 신박한 풀이가 나오는 문제입니다.
먼저 최대 2000개의 약 봉지를 올려놓을 수 있다고 했는데, 그냥 바로 2000을 출력하여 모든 상황을 처리할 수 있게 하였습니다.
그리고 1을 1000번 출력하는 반복문과 1000을 1000번 출력하는 반복문을 작성해 줍니다.
왜 하필이면 1과 1000을 사용하였냐면 1은 그 어떠한 숫자가 입력되어도 모든 알약을 커버할 수 있기 때문에 1을 출력하고, 1000은 2000, 3000, 4000 처럼 큰 수를 처리하기 위해 출력하였습니다.
이렇게 되면 그 어떠한 숫자가 들어와도 1과 1000으로 묶을 수 있기 때문에 문제를 해결할 수 있습니다.
#include <iostream>
using namespace std;
int main() {
// 아무 역할도 하지 않음
int N;
cin >> N;
// 최대 2000개까지 올려놓을 수 있으니 그냥 바로 2000개로 지정
cout << 2000 << endl;
// 알약 1개 : 그 어떠한 수도 커버할 수 있음
for (int i = 0; i < 1000; i++) {
cout << "1" << " ";
}
// 알약 1000개 : 큰 수를 보다 편하게 하기 위해
for (int i = 0; i < 1000; i++) {
cout << "1000" << " ";
}
return 0;
}
반응형
'📊 알고리즘' 카테고리의 다른 글
[백준] 10940 - BASE16 인코딩 (Python) (0) | 2023.01.04 |
---|---|
[백준] 26545 - Mathematics (0) | 2023.01.03 |
[백준] 26574 - Copier (0) | 2023.01.01 |
[백준] 5988 - 홀수일까 작수일까 (0) | 2022.12.31 |
[백준] 26766 - Serca (0) | 2022.12.30 |