프로그래머스 지폐 접기 JAVA 풀이 (구현, 반복문)

2026. 6. 13. 23:51·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 문제 개요

지갑의 크기와 지폐의 크기가 주어진다.

지폐를 지갑에 넣기 위해서는 지폐를 여러 번 접을 수 있다.

 

지폐를 접을 때는 항상 더 긴 쪽을 반으로 접으며, 길이가 홀수인 경우 소수점 이하는 버린다.

지폐는 그대로 넣거나 90도 회전해서 넣을 수 있다.

 

이때 지폐를 지갑에 넣기 위해 필요한 최소 접기 횟수를 구하는 문제이다.


📌 접근 방법

지폐는 90도 회전할 수 있으므로 wallet[0], wallet[1]을 그대로 bill[0], bill[1]과 비교하면 안 된다.

대신 지갑과 지폐 각각의 큰 값과 작은 값을 기준으로 비교한다.

 

지폐의 큰 값이 지갑의 큰 값보다 크거나, 지폐의 작은 값이 지갑의 작은 값보다 크면 아직 지갑에 들어갈 수 없다.

이 경우 지폐의 두 길이 중 더 긴 쪽을 반으로 접고, 접은 횟수를 1 증가시킨다.

 

이 과정을 지폐가 지갑에 들어갈 수 있을 때까지 반복한다.


📌 핵심 아이디어

지폐를 회전할 수 있기 때문에 다음과 같이 비교한다.

Math.max(bill[0], bill[1]) <= Math.max(wallet[0], wallet[1])
Math.min(bill[0], bill[1]) <= Math.min(wallet[0], wallet[1])

위 조건을 만족하면 지폐를 지갑에 넣을 수 있다.

반대로 하나라도 만족하지 못하면 접어야 한다.

while (
    Math.max(bill[0], bill[1]) > Math.max(wallet[0], wallet[1]) ||
    Math.min(bill[0], bill[1]) > Math.min(wallet[0], wallet[1])
) {
    ...
}

접을 때는 항상 긴 쪽을 반으로 접는다.

if (bill[0] > bill[1]) {
    bill[0] /= 2;
} else {
    bill[1] /= 2;
}

📌 전체 코드

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

        while (
            Math.max(bill[0], bill[1]) > Math.max(wallet[0], wallet[1]) ||
            Math.min(bill[0], bill[1]) > Math.min(wallet[0], wallet[1])
        ) {
            if (bill[0] > bill[1]) {
                bill[0] /= 2;
            } else {
                bill[1] /= 2;
            }

            answer++;
        }

        return answer;
    }
}

📄 정리

이 문제는 지폐를 직접 회전시키는 것이 아니라,

큰 값과 작은 값을 기준으로 비교하면 쉽게 해결할 수 있다.

 

지폐는 접을 때마다 크기가 바뀌므로 반복문 조건에서 Math.max, Math.min을 매번 다시 계산해야 한다.

단순 구현 문제지만, 반복 중 갱신되는 값을 조건식에 제대로 반영하는 것이 중요했다.

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 폰켓몬 JAVA 풀이 (HashSet, 자료구조)  (0) 2026.06.15
프로그래머스 기사단원의 무기 JAVA 풀이 (약수, 구현)  (0) 2026.06.15
프로그래머스 자릿수 더하기 JAVA 풀이 (수학, 구현)  (0) 2026.06.12
프로그래머스 PCCP 기출문제 - 저수지 물 사용량 예측(Java)  (0) 2026.06.11
프로그래머스 옹알이 JAVA 풀이(문자열, 구현)  (0) 2026.06.10
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 폰켓몬 JAVA 풀이 (HashSet, 자료구조)
  • 프로그래머스 기사단원의 무기 JAVA 풀이 (약수, 구현)
  • 프로그래머스 자릿수 더하기 JAVA 풀이 (수학, 구현)
  • 프로그래머스 PCCP 기출문제 - 저수지 물 사용량 예측(Java)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    solved.ac
    피보나치
    수학
    level0
    정처기
    백엔드개발자
    자바
    실기
    정처기오답노트
    프로그래머스
    java
    자료구조
    문자열
    브루트포스
    level1
    구현
    springboot
    Level2
    알고리즘
    코딩테스트
    배열
    완전탐색
    정처기실기
    기출문제
    시뮬레이션
    백준
    정렬
    정보처리기사
    dp
    정보처리기사 실기 기출문제
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 지폐 접기 JAVA 풀이 (구현, 반복문)
상단으로

티스토리툴바