치킨 쿠폰
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
- chicken은 정수입니다.
- 0 ≤ chicken ≤ 1,000,000
function solution(chicken) {
let coupon = chicken; // 현재 쿠폰의 수
let serviceChicken = 0; // 서비스 치킨의 수
while(coupon > 9) {
serviceChicken += Math.floor(coupon / 10);
coupon = Math.floor((coupon / 10) + ( coupon % 10));
}
return serviceChicken;
}
1. 치킨 한 마리당 쿠폰이 발급된다.
2. serviceChicken 값 초기화
3. 쿠폰은 10장부터 사용할 수 있으므로, 10장 이상부터 서비스 치킨++
4. 쿠폰은 10장마다 또 하나의 쿠폰이 나오는 것처럼 서비스 치킨이 제공된다.
이진수 더하기
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤ bin1, bin2의 길이 ≤ 10
- bin1과 bin2는 0과 1로만 이루어져 있습니다.
- bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
function solution(bin1, bin2) {
const a = parseInt(bin1, 2)
const b = parseInt(bin2, 2)
return (a + b).toString(2)
}
// 다른 풀이 방법
function solution(bin1, bin2) {
let temp = Number(bin1) + Number(bin2);
temp = [...temp.toString()].reverse().map((v) => +v);
for (let i = temp.length; i < 11; i++) {
temp.push(0);
}
for (let i = 0; i < temp.length; i++) {
if (temp[i] === 2) {
temp[i] = 0;
temp[i + 1]++;
} else if (temp[i] === 3) {
temp[i] = 1;
temp[i + 1]++;
}
}
return Number(temp.reverse().join("")).toString();
}
parseInt는 문자열을 특정 진수로 반환하는 메소드이다. parseInt(bin1) 이라고만 작성할 경우에는 10진수로 변환된다. 두 번째 인수로는 변환할 진수를 매개변수로 설정할 수 있다.
1) 각각의 문자열을 2진수로 변환하여 계산한다.
2) 계산된 값을 다시 문자열로 변환한다.
<다른 풀이 방법에 대한 해설>
아직 이해를 못 하겠다.
저희가 2진수 덧셈할때 2가 되면 왼쪽 자리에 1을 더하잖아요? 왼쪽자리에 1을 더해서 거기도 2가 되면 또 그 왼쪽 자리에 1을 더하고... 이걸 반복하게 되는데 자바스크립트로는 반복문이 오른쪽으로 진행되잖아요? 그래서 reverse하셔서 반복문 돌리고 다시 reverse한 후 합치신겁니다.
반올림이 생길 수 있으므로 0을 Push해줍니다. 11만큼 푸시해주는 이유는 bin1 과 bin2의 길이가 10이하인 것을 고려해서 입니다
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 입문 - 문자열 밀기 / 숨어있는 숫자의 덧셈 (2) (0) | 2024.04.26 |
---|---|
프로그래머스 0단계 입문 - 옹알이 (1) / 등수 매기기 (0) | 2024.04.24 |
프로그래머스 0단계 - Day20 수학, 시뮬레이션, 문자열, 사칙연산 (0) | 2024.03.24 |
프로그래머스 0단계 - Day19 문자열, 배열, 조건문 (0) | 2024.03.23 |
프로그래머스 0단계 - Day18 문자열, 수학, 조건문, 정렬 (0) | 2024.03.23 |
댓글