프로그래머스 코딩 테스트 1. 지폐 접기
1. 문제 설명

제한 사항

2. 입출력 예시

3. 코드 작성
class Solution {
public int solution(int[] wallet, int[] bill) {
int answer = 0;
while(true) {
int bill_min = bill[0] < bill[1]? bill[0] : bill[1];
int bill_max = bill[0] > bill[1]? bill[0] : bill[1];
int wallet_min = wallet[0] < wallet[1]? wallet[0] : wallet[1];
int wallet_max = wallet[0] > wallet[1]? wallet[0] : wallet[1];
if(wallet_min < bill_min){
if (bill[0] > bill[1]) bill[0] /= 2;
else bill[1] /= 2;
answer++;
} else if(wallet_max < bill_max) {
if (bill[0] > bill[1]) bill[0] /= 2;
else bill[1] /= 2;
answer++;
} else break;
}
return answer;
}
}
- 지폐를 접는 횟수를 저장할 변수 answer 선언
- 반복문을 통해 지폐가 지갑의 크기 이하가 될 때 까지 지폐를 접기
- 이 때, 지폐를 돌려서 넣을 수도 있으므로, 지갑과 지폐의 제일 크거나 제일 작은 값끼리 비교
- 지폐 길이의 최솟값이 지갑 길이의 최솟값보다 클 때 ( 90도 돌려보기 )
- 가로, 세로 중 더 큰 값을 2로 나눔
- int로 선언되어 있으므로 소수점은 알아서 버려짐
- 접는 횟수 증가 (answer++)
- 지폐 길이의 최댓값이 지갑 길이의 최댓값보다 클 때 ( 그냥 넣기 )
- 가로, 세로 중 더 큰 값을 2로 나눔
- int로 선언되어 있으므로 소수점은 알아서 버려짐
- 접는 횟수 증가 (answer++)
- 지폐가 지갑에 들어갈 크기가 되면 (가로, 세로가 지갑보다 작으면) break
- answer 반환
4. 테스트 결과

5. 채점

Share article