[Javascript : programmers] 조건에 맞게 수열 변환하기 2 (Lv.0)
[Javascript : programmers] 조건에 맞게 수열 변환하기 2 (Lv.0)
문제
나의 정답 풀이
function solution(arr) {
let count = 0;
while(true){
let arr2 = arr.map(v=>(v%2==0)&&(v>=50) ? v/2 : (v%2==1)&&(v<=50) ? v*2+1 : v);
if(arr.join('') == arr2.join('')) break;
count++;
arr = arr2;
}
return count;
}
while 문을 통해서 무한 루프를 돌면서 변형한 새로운 배열과 기존 배열이 같은지를 구분하는 것이 핵심이다.
배열을 비교하는 방법으로는 배열을 문자열로 합친 후 같은지를 보는 방법을 사용하였다.
arr의 복사본을 사용하는 것이 좋지만 이렇게 하지 않은 점이 아쉽다.
배열을 비교하는 또 다른 방법으로는 Array.every() 함수가 있다.
학습 내용 ⭐
- Array.every( 콜백함수 ) : 배열의 모든 요소가 콜백함수를 통과하는지 테스트한다. 모두 통과하면 true, 아니면 false를 반환한다.
const isBelowThreshold = (currentValue) => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// Expected output: true
array1의 모든 요소가 40보다 작은지를 테스트하였고, 이를 통과하여 true를 반환하였다.
<참고>
every 메서드
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every
Array.prototype.every() - JavaScript | MDN
Array 인스턴스의 every() 메서드는 배열의 모든 요소가 제공된 함수로 구현된 테스트를 통과하는지 테스트합니다. 이 메서드는 불리언 값을 반환합니다.
developer.mozilla.org
조건에 맞게 수열 변환하기 1
2024.08.26 - [Javascript/자바스크립트 문제] - [Javascript : programmers] 조건에 맞게 수열 변환하기 1 (Lv.0)
[Javascript : programmers] 조건에 맞게 수열 변환하기 1 (Lv.0)
[Javascript : programmers] 조건에 맞게 수열 변환하기 1 (Lv.0) 문제 나의 정답 풀이function solution(arr) { return arr.map((v) => (v >=50) && (v%2 == 0) ? v/2 : (v arr 배열을 map으로 순회하면서 총 3가지의 조건에
yy-kkang.tistory.com