※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25166번 문제인 배고픈 아리의 샌드위치 구매하기이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25166
25166번: 배고픈 아리의 샌드위치 구매하기
"두리"라는 나라가 있다. 이 나라에서 사용되는 동전은 1원, 2원, 4원, 8원, 16원, 32원, 64원, 128원, 256원, 512원짜리 이렇게 총 10가지이다. 이 나라의 국민인 아리는 10가지의 동전을 각각 1개씩 총 10
www.acmicpc.net
아리가 가지고 있는 돈으로는 0부터 1023까지의 금액을 전부 만들 수 있다. 샌드위치의 가격이 1023 이하라면 No thanks를 출력하자.
그렇지 않다면 아리는 먼저 자신이 낼 수 있는 최대한의 돈을 내므로 아리가 더 필요한 금액은 (샌드위치 가격) - 1023이 된다. 이 금액을 쿠기가 가진 돈으로 낼 수 있다면 Thanks, 그렇지 않다면 Impossible을 출력하자.
쿠기가 가진 돈으로 남은 금액을 낼 수 있는지의 여부는 & 비트연산을 이용하는 것으로 쉽게 판단할 수 있다. 두 금액의 이진수표현을 이용해 답을 구할 수 있기 때문이다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int S, M; cin >> S >> M;
if (S < 1024) cout << "No thanks";
else {
S -= 1023;
if ((S & M) == S) cout << "Thanks";
else cout << "Impossible";
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25165 // C++] 영리한 아리의 포탈 타기 (0) | 2022.08.21 |
---|---|
[BOJ 25190 // C++] 피앳산 청정수 (0) | 2022.08.21 |
[BOJ 14648 // C++] 쿼리 맛보기 (0) | 2022.08.21 |
[BOJ 25174 // C++] 힘겨운 쿠기의 식당 개업기 (0) | 2022.08.21 |
[BOJ 2381 // C++] 최대 거리 (0) | 2022.08.21 |