일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 25642번
- 2355번
- 백준
- Java
- 21964
- 프로젝트 기획서
- 14215번
- 나무 공격
- 14656번
- 1141번
- 14467번
- 14726번
- 1333번
- 24267번
- 7489번
- 14322번
- 10814번
- 25904번
- 1362번
- 25576번
- 1568번
- 오블완
- 5597번
- 자바
- 티스토리챌린지
- 21866번
- Baekjoon
- 10409번
- 14592번
- 20953번
- Today
- Total
suheang
[백준] | JAVA, 자바 | 25166번 - 배고픈 아리의 샌드위치 구매하기 본문
https://www.acmicpc.net/problem/25166
문제 요약 :
이 나라에서 사용되는 동전은 1원, 2원, 4원, 8원, 16원, 32원, 64원, 128원, 256원, 512원짜리 이렇게 총 10가지이다. 이 나라의 국민인 아리는 10가지의 동전을 각각 1개씩 총 10개를 가지고 있다.
아리는 샌드위치를 사러 빵집에 가기로 했다. 그런데 빵집에 잔돈이 없어서 샌드위치 가격 S 을 정확하게 지불하지 않으면 샌드위치를 살 수 없다고 한다. 아리가 가지고 있는 동전들을 가지고 계산을 하던 도중 아리의 친구인 쿠기가 마침 빵집에 들어왔다.
쿠기는 10종류의 동전 중에 모든 종류가 아니라 일부 종류의 동전을 각각 1개씩 가지고 있다. 쿠기가 가지고 있는 동전들의 총 금액은 M 원이다.
쿠기는 아리에게 자신이 가진 돈 중에 일부 또는 전체를 흔쾌히 빌려줄 수 있다고 한다. 단, 아리는 양심 상 자신의 돈을 남긴 상태로 쿠기에게 돈을 빌릴 수는 없어서 자신이 가진 돈을 모두 사용한 후에 부족한 금액에 대해서 쿠기에게 돈을 빌리려고 한다.
아리의 돈으로만 살 수 있다면 "No thanks"를 출력하고, 쿠기의 도움을 받아야만 살 수 있다면 "Thanks" 그리고 쿠기가 돈을 빌려주더라도 샌드위치를 살 수 없다면 "Impossible"를 출력
문제 풀이 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int s = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] coin = {512, 256, 128, 64, 32, 16, 8, 4, 2, 1};
for (int value : coin) {
if (s >= value) {
s -= value;
}
}
if (s == 0) {
System.out.println("No thanks");
return;
}
if ((s & m) == s) {
System.out.println("Thanks");
} else {
System.out.println("Impossible");
}
}
}
1. 샌드위치 가격 s, 쿠키가 가지고 있는 금액 m 입력받기
2. 배열 coin을 만들어서 사용되는 동전의 크기들을 저장
3. s가 배열에 저장된 값보다 크다면 s의 값을 s - coin[i]으로 변경
4. 만약 s가 0이라면 "No thanks" 출력
5. 비트 연산을 통해 s의 모든 비트가 m의 비트로 커버 될 수 있는지 확인하고 가능하다면 "Thanks" 출력, 그렇지 않다면 "Impossible" 출력
'알고리즘' 카테고리의 다른 글
[백준] | JAVA, 자바 | 22966번 - 가장 쉬운 문제를 찾는 문제 (0) | 2024.05.30 |
---|---|
[백준] | JAVA, 자바 | 2355번 - 시그마 (0) | 2024.05.29 |
[백준] | JAVA, 자바 | 1236번 - 성 지키기 (0) | 2024.05.28 |
[백준] | JAVA, 자바 | 2953번 - 나는 요리사다 (0) | 2024.05.27 |
[백준] | JAVA, 자바 | 10886번 - 0 = not cute / 1 = cute (0) | 2024.05.27 |