Day2 - 동전문제

박경희·2023년 5월 25일
0

강의 복습 및 정리

목록 보기
6/28
  1. 동전문제
public class Banking {
    public static void main(String[] args) {
        int money = 50300;  
        int coffee = 2200; 
        // 1.커피 몇잔을 살 수 있을까요? 2. 얼마가 남을까요?
        System.out.println(money / coffee);  // - 22잔
        System.out.println(money % coffee);   //-19잔
        
        //3. 거스름돈 1000원 몇장, 500원 몇개 100원 몇개 줘야하나?
        
        int 거스름돈 = money % coffee;
        int[] 화폐 = {1000, 500, 100};
        for (int i = 0; i < 화폐.length; i++) {
            if (i == 0) {
                System.out.println(거스름돈 / 화폐[i]); // 1900/1000
            } else { // 처음 이후 i 가 0이 아니니까 여기로 와서 돌아간다.
                System.out.println(
           ((거스름돈 - ((거스름돈 / 화폐[i - 1]) * 화폐[i - 1])) / 화폐[i]));    
        } 
  • 처음 i가 0일 때에는 if에서 참이 되므로 (거스름돈 / 화폐[i])로 계산된다.
    그럼 '1900 / 1000' 에서 몫인 1이 출력된다.
  • 그 후 두 번째로 돌 때에는 i가 0이 아니므로 else로 들어간다.
    ((거스름돈 - ((거스름돈 / 화폐[i - 1]) * 화폐[i - 1])) / 화폐[i]));
    ->i가 1일 때
    ((1900 -((1900/1000) * 1000)) / 500));
    ((1900 -(1 * 1000)) / 500));
    ((1900 -1000 / 500));=> 900 / 500이 되서 몫 1이 출력.
  • 마지막으로 i가 2일 때
    ->((1900 - ((1900/500)*500))/100));
    ((1900 - (3*500))/100));
    ((1900 - 1500 / 100); -> 400 / 100이 되서 몫 4가 출력.

당일에 수업을 들으면서는 수업을 쫒아가며 코드를 치느라 제대로 이해하지도 못하고 괄호도 있을 곳에 없고 없을 곳에 있게 입력해서 계속 에러가 뜨고 돌아가지 않았는데
복습시간을 가지며 다시 차근차근 코드를 읽어보니 괄호가 어디서 문제가 생겼는지 찾고 어떤 흐름으로 돌아가는지 알 수 있었다. 마지막 i에 2가 들어갈 때에는 눈으로만 보고 읽기에는 헷갈려서 손으로 직접 써보았는데 글로 써보니 이해가 잘 됐다.
손으로도 많이 움직여야 한다는게 무슨 뜻인지 이해가 된 시간이였다.

0개의 댓글