▶every() 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.
이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.
단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.
제한사항
- 1 ≤ arr의 길이 ≤ 1,000,000
- 1 ≤ arr의 원소의 값 ≤ 100
입출력 예 & 설명
입출력 예 #1
- 위 작업을 반복하면 다음과 같이 arr가 변합니다.
- 이후로 arr가 변하지 않으며, arr(5) = arr(6)이므로 5를 return 합니다.
나의 풀이
먼저 이번 문제를 풀기 전 every() 함수에 대해서 알아야 합니다.
정수 배열 arr을 전개 연산자(...)를 사용하여 prev 변수에 복사를 해줍니다.
그 후 arr 배열의 길이만큼 for문을 돌려줍니다.
그리고 next 변수에 prev를 map() 함수를 사용하여 조건에 만족하는 요소를 return 해줍니다.
every() 함수를 사용하여 prev의 모든 element가 next와 동일하다면 isEqual 변수에 true가 들어가고 하나라도 불만족하는 요소가 있다면 false가 들어가게 됩니다.
즉 prev(전 배열) next(다음 배열) 이 똑같다면 true 다르다면 false가 들어가게 됩니다.
배열의 인덱스를 앞으로 이동시키기 위하여 현재 next를 prev로 만들고 다시 next의 map()을 돌아서 새로운 next를 만들어줍니다.
그리고 14번째 줄에서 prev와 next가 같은지 비교하고 같다면 반복문을 탈출하고, 다르다면 answer을 카운트 1을 추가해 줍니다.
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 조건 문자열 (JavaScript) (1) | 2024.02.16 |
---|---|
[프로그래머스] 문자 개수 세기 (JavaScript) (1) | 2024.02.13 |
[프로그래머스] 리스트 자르기 (JavaScript) (0) | 2024.02.12 |
[프로그래머스] 문자열 묶기 (JavaScript) (1) | 2024.02.11 |
[프로그래머스] 세 개의 구분자 (JavaScript) (1) | 2024.02.09 |