- [JavaScript] every 배열 메서드를 활용한 소수(prime) 판별2023년 11월 18일 20시 57분 38초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 코테 문제 풀다가...
프로그래머스 코테 문제 "소수 만들기"를 풀이하고 있었다. 나의 경우 동일한 문제를 파이썬과 자바스크립트로 각각 풀이해오고 있다. 이 문제를 해결하기 위해 주어진 숫자가 소수인지를 판별해야 해서 소수 판별을 위한 함수를 정의하였다. 해당 파이썬 코드는 다음과 같다.
# 소수 판별 - 파이썬 def is_prime_num(n): for i in range(2, n): if n % i == 0: return False return True
인자로 들어온 숫자가 소수이면 True, 아니면 False를 리턴하는 파이썬 문법의 함수인데, 자바스크립트에서 for문을 이용하지 않고 작성하고자 하였다.
😉 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다.
2. every 배열 메서드를 이용한 소수 판별 코드
for문의 경우 특정 조건에서 break로 반복을 벗어날 수 있다. 또한 위 코드처럼 함수 안에서 돌고 있는 for문은 return으로도 빠져나올 수도 있다. 물론 자바스크립트에도 for문이 존재하고 동일한 방식이 적용 가능하다. 하지만 배열 메서드를 이용해 동일한 결과를 얻고자 한다.
배열 메서드 중 forEach는 배열의 요소를 순회하는 대표적인 메서드이다. 아쉬운점은 for문의 break, return과 같은 문법을 제공하지 않는다. 하지만 some, every를 이용하면 유사한 효과를 낼 수 있다. some은 배열 요소가 순회할 때 해당 요소가 어떤 조건에 하나라도 충족되면 순회를 멈추고 true를 반환한다. every는 한 요소라도 어떤 조건에 충족이되지 않으면 false를 반환하고 순회를 멈춘다.
아래 자바스크립트 코드는 every 배열 메서드를 이용했는데 소수 판별 대상이 되는 숫자 n을 2부터 n-1에 해당하는 숫자로 나눠 나머지가 0이 아닌 경우 true를 반환한다. 만약 한 요소라도 나머지가 0이라면 순회를 멈추고 false를 반환한다.
// 소수 판별 - 자바스크립트 const isPrimeNum = (n) => { const range = Array.from({ length: n - 2 }, (_, i) => i + 2); const result = range.every((v, i) => { return n % v !== 0; }); return result; };
728x90반응형'언어·프레임워크 > JavaScript' 카테고리의 다른 글
[JavaScript] filter(), some() 배열 메서드를 이용해 두 배열 간 일치하지 않는 객체 요소 구하기 (0) 2024.02.21 [JavaScript] split() 문자열 메서드 이용해 특정 문자열의 개수 구하기 (0) 2023.12.10 [JavaScript] 클린코드 자바스크립트 : 객체 (0) 2023.10.25 [JavaScript] base64 데이터를 다룰 때 만난 TypeError 에러, base64를 Blob로 변환하여 해결! (0) 2023.10.20 [JavaScript] 클린코드 자바스크립트 : 배열 (1) 2023.10.14 다음글이 없습니다.이전글이 없습니다.댓글