/*
- 문제 : 점수가 주어지면 럭키 스트레이트를 사용할 수 있는 상태인지
- 자료 :
정수 N (점수)
N의 자릿수는 항상 짝수 형태
- 조건:
첫째 줄에 럭키 스트레이트를 사용할 수 있으면 "LUCKY" 사용할 수 없으면 "READY" 출력
- 계획:
문자열을 반으로 자른다.
반으로 자른 것을 모두 더한다 (for문 최댓값 문자열 반절의 length)
두 값을 비교한다.
- 반성
반복문을 바꿔보는 거말고는 다른 거 생각하면 넘 오래걸려서 급하게 넘어가게 됨.
*/
// for문
const run = (number) => {
let result = 0;
const splitNumber = [...number];
for (let i = 0; i < number.length; i += 1) {
result += Number(splitNumber[i]);
}
return result;
};
const solution = (number) => {
const num1 = number.substr(0, number.length / 2);
const num2 = number.substr(number.length / 2, number.length - 1);
return run(num1) === run(num2) ? 'LUCKY' : 'READY';
};
// reduce
const run2 = (number) => {
let result = 0;
const splitNumber = [...number];
result = splitNumber.reduce((prev, curr) => Number(prev) + Number(curr));
return result;
};
const solution2 = (number) => {
const num1 = number.substr(0, number.length / 2);
const num2 = number.substr(number.length / 2, number.length - 1);
return run2(num1) === run2(num2) ? 'LUCKY' : 'READY';
};
// 재귀함수
const run3 = (number, result = 0) => {
const splitNumber = [...number];
if (number.length === 0) {
return result;
}
return run3(number.slice(1), result + Number(splitNumber[0]));
};
const solution3 = (number) => {
const num1 = number.substr(0, number.length / 2);
const num2 = number.substr(number.length / 2, number.length - 1);
return run3(num1) === run3(num2) ? 'LUCKY' : 'READY';
};
for문, reudce, 재귀함수를 이용해서 풀어보았다.
'Algorithm' 카테고리의 다른 글
[JavaScript] 프로그래머스 level 1 - 평균 구하기 (0) | 2022.09.20 |
---|---|
[JavaScript] 프로그래머스 level1 - k진수에서 소수 개수 구하기 (1) | 2022.09.20 |
[JavaScript] 볼링공 고르기 - 이것이 코딩 테스트다 (1) | 2022.09.19 |
[JavaScript] 프로그래머스 level1 자릿수 더하기 (0) | 2022.09.19 |
[JavaScript] 프로그래머스 level1 짝수와 홀수 (0) | 2022.09.19 |