프로그래머스 코딩테스트 입문 0단계 문제입니다
https://school.programmers.co.kr/learn/courses/30/lessons/120884
📢 문제 설명
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
⭕ 정답 코드
class Solution {
public int solution(int chicken) {
int answer = 0;
while(chicken >= 10){ //쿠폰이 10개 이상 남았을때만
answer += chicken / 10; //쿠폰 10개당 치킨 1개
chicken += (chicken / 10) - (chicken / 10 * 10);
//쿠폰으로 바꾼 치킨 받으면서 쿠폰도 한 장 받고
//치킨 바꾸느라 쓴 쿠폰도 10장 단위로 빼주기
}
return answer;
}
}
🔍 해설
쿠폰 개수 = 치킨 개수
chicken은 쿠폰 개수로 생각하고 코드를 이해하면 된다
흐름은 주석을 참고! 밑에 설명은 연산자에 대한 설명 위주로 작성했다
① (chicken / 10)은 지금 가지고 있는 쿠폰으로 바꿀 수 있는 치킨의 개수이다.
ex) chicken에 83이 있으면 총 8마리의 치킨으로 바꿀 수 있다
② 그래서 answer과 chicken에 ①의 값을 더해준다
③ (chicken / 10 * 10)은 치킨을 바꾸느라 쓴 쿠폰의 개수이다. 10개에 한 마리이기 때문에 10개 단위로 chicken에서 빼준다
'코딩테스트 스터디' 카테고리의 다른 글
코딩테스트 연습 - A로 B 만들기 (JAVA) (0) | 2023.01.25 |
---|---|
코딩테스트 연습 - 인덱스 바꾸기 (JAVA) (0) | 2023.01.19 |
코딩테스트 연습 - 배열의 유사도 (JAVA) (0) | 2023.01.13 |
코딩테스트 연습 - 문자열안에 문자열 (JAVA) (0) | 2023.01.12 |
코딩테스트 연습 - 문자열 정렬하기 (2) (JAVA) (0) | 2023.01.11 |