문제
https://school.programmers.co.kr/learn/courses/30/lessons/340199
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
지폐를 접을 때마다 현재 가로와 세로 중 더 긴 변을 절반으로 접는 방식이다.
먼저 지갑의 가로와 세로를 w, h에 저장한다. 이후 지폐의 방향을 바꿔 넣을 수도 있으므로 다음 두 경우 중 하나라도 만족하면 지갑에 들어갈 수 있는 상태이다.
if((w>=bill[0] && h>=bill[1]) || (w>=bill[1] && h>=bill[0])){
break;
}
지갑에 들어가지 않는다면 bill[0]과 bill[1] 중 더 긴 변을 절반으로 접는다.
if(bill[0]>bill[1])
bill[0]/=2;
else
bill[1]/=2;
answer++;
두 변의 길이가 같은 경우에는 else에서 bill[1]을 절반으로 줄이게 되지만, 어느 변을 접어도 결과는 동일하다.
이 과정을 지폐가 지갑에 들어갈 수 있을 때까지 반복하고, 접은 횟수인 answer를 반환하는 방식이다.
코드
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
int w = wallet[0];
int h = wallet[1];
while(true){
if((w>=bill[0] && h>=bill[1]) || (w>=bill[1] && h>=bill[0])){
break;
}
if(bill[0]>bill[1])
bill[0]/=2;
else
bill[1]/=2;
answer++;
}
return answer;
}
}'PS > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv.2] 타겟 넘버(Java) (0) | 2026.10.10 |
|---|---|
| [프로그래머스 Lv.2] 디펜스 게임(Java) (0) | 2026.09.10 |
| [프로그래머스 Lv.0] 문자열 밀기(Java) (0) | 2026.08.22 |
| [프로그래머스 Lv.0] 저주의 숫자3(Java) (0) | 2026.08.18 |
| [프로그래머스 Lv.0] 로그인 성공?(Java) (0) | 2026.08.09 |
댓글