[프로그래머스/JAVA] 지폐 접기

밍주🫧 ·2025년 3월 2일
0
post-thumbnail

문제 원문

프로그래머스 지폐 접기

문제 정리

  1. 지폐를 접은 횟수를 저장할 정수 변수 answer를 만들고 0을 저장합니다.
  2. 반복문을 이용해 bill의 작은 값이 wallet의 작은 값 보다 크거나 bill의 큰 값이 wallet의 큰 값 보다 큰 동안 아래 과정을 반복합니다.
    2-1. bill[0]이 bill[1]보다 크다면
    bill[0]을 2로 나누고 나머지는 버립니다.
    2-2. 그렇지 않다면
    bill[1]을 2로 나누고 나머지는 버립니다.
    2-3. answer을 1 증가시킵니다.
  3. answer을 return합니다.

ㅎㅎ 이번엔 예문이 자세히 나와 있어서 내가 정리할 시간을 줄였다 ㅎㅎ!

처음에는 Arrays.sort로 해서 최댓값을 뺐는데, swap하고 다시 계산하니 계산이 한 번 더 됐다...
내가 어딘갈 분명히 잘못한 것일텐데 헛허
그래서 Math의 max, min을 사용해서 풀었다.

최종 코드


class Solution {
 public int solution(int[] wallet, int[] bill) {
        int answer = 0;

        int bWallet = Math.max(wallet[0], wallet[1]);
        int sWallet = Math.min(wallet[0], wallet[1]);
        int bBill = Math.max(bill[0], bill[1]);
        int sBill = Math.min(bill[0], bill[1]);


        while (true) {

            if(sBill > sWallet || bBill > bWallet) {
                bBill = bBill/2;
                answer++;
            }
                
            //접을 수 있는 지폐가 남아있으면 값 바꿔서 접기   
            if(bBill < sBill) {
                int tmp = bBill;
                bBill = sBill;
                sBill = tmp;
            }
       
             //지갑의 크기보다 같거나 작으면 종료
            if(sBill <= sWallet && bBill <= bWallet) {
                break;
            }
        }
       
        
        return answer;
    }
}

성공!

0개의 댓글

관련 채용 정보