Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[백준] - 거스름돈 (5585) (자바/Java) 본문
https://www.acmicpc.net/problem/5585
문제.
풀이.
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int money = 1000;
int m = sc.nextInt();
sc.close();
int tot = money - m;
int change = 0;
while (tot > 0){
if (tot >= 500) {
tot -= 500;
change++;
}
else if (tot >= 100 && tot < 500) {
tot -= 100;
change++;
}
else if (tot >= 50 && tot < 100) {
tot -= 50;
change++;
}
else if (tot >= 10 && tot < 50) {
tot -= 10;
change++;
}
else if (tot >= 5 && tot < 10) {
tot -= 5;
change++;
}
else if (tot >= 1 && tot < 5){
tot -= 1;
change++;
}
if (tot == 0) {
System.out.println(change);
break;
}
}
}
}
이번 문제는 " 거스름돈 " 문제다.
문제를 읽자 제일 먼저 조건식 문제라는 생각이 들었다. 그래서 바로 조건식을 흔히 말하는 하드코딩을 통해서 풀어봤는데
런타임 에러도 나지 않고 순조롭게 성공이 나왔다.
그럼 바로 풀이로 가보겠다.
1. 각 500, 100, 50, 10, 5, 1 원 조건식에 충족하게 짠다.
2. 조건식이 맞을때 마다 금액이 줄어들고 몇 번 거슬렀는지 카운트한다.
3. 최종적으로 tot변수 금액이 0원이 된다면 break를 걸어주고 총 거스른 횟수를 반환한다.
이렇게 쉽게(?) 풀 수 있는 방법이 있지만 문득 코드가 분명 너무 길고 보다 짧게 만들 수 있을 거 같아 조금 더 생각해 다시 한번 풀어봤다.
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int[] arr = {500, 100, 50, 10, 5, 1};
int tot = 1000 - m;
int change = 0;
for (int i = 0; i < arr.length; i++) {
if (tot / arr[i] != 0) {
change += tot / arr[i];
tot %= arr[i];
}
}
System.out.println(change);
}
}
확실히 위에 코드보다 짧아진 걸 확인할 수 있고 보기에도 편한 걸 알 수 있다.
처음부터 이렇게 간단하고 짧은 코드가 생각나지 않더라도 차근차근 오늘처럼 쉬운 방식으로 풀어보고 다음으로 코드를 줄일 수 있다면 또 다른 방식으로 풀어봐야겠다.
'알고리즘문제 > 백준 문제(Java)' 카테고리의 다른 글
[백준 ] - 더하기 사이클 (1110) (자바/Java) (0) | 2024.05.12 |
---|---|
[백준] - 슈퍼 마리오 (2851) (자바/Java) (0) | 2024.05.11 |
[백준] - 소수 (2581) (자바/Java) (0) | 2024.05.09 |
[백준] - 개 (10172) (자바/Java) (0) | 2024.05.08 |
[백준] - 윤년 (2753) (자바/Java) (0) | 2024.05.08 |