Javascript/자바스크립트 문제

[Javascript : programmers] 조건에 맞게 수열 변환하기 2 (Lv.0)

isfp_yykkng 2024. 8. 26. 14:17

[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