Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- utf8mb4
- 코딩테스트
- dotenv
- 코드정렬
- .env
- AWS
- reacts3
- 자동완성방지
- Node
- 자연수 뒤집어 배열로 만들기
- elasticIP
- 제일 작은 수 제거하기
- prettier
- vscode
- s3확장자
- axios
- MySQL
- 리액트코드정렬
- 프리티어
- 프로그래머스
- useReducer
- interactive_timeout
- next #middleware
- react
- express
- EC2
- 커밋 한번에
- max_allowed_packet
- 리액트
- 부족한 금액 계산하기
Archives
- Today
- Total
Sungtt
Lev.1 프로그래머스 약수의 개수와 덧셈 본문
프로그래머스 [약수의 개수와 덧셈]
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ left ≤ right ≤ 1,000
직접 풀이 결과
function solution(left, right) {
var answer = 0;
let length = right - left + 1;
let numberList = Array.from({length:length},(v,i) => left+i); // [13,14,15,16,17]
let count = numberList.map((num,idx) => {
let 갯수 = 0;
for(let i = 1 ; i <= num ; i++){
if(num % i === 0) 갯수++;
}
갯수%2===0 ? answer+=numberList[idx] : answer-=numberList[idx]
})
return answer;
}
Array.from을 사용하여 약수의 개수를 구해야할 숫자목록을 생성했다.
이 목록을 순회하며 각 요소의 약수의 갯수를 구한 뒤 갯수가 홀,짝수냐에 따라
answer에 값을 더해주고 빼준다.
중간중간 방식을 바꿔서 시도하다보니 불필요한 메소드가 사용된것이 보인다.
배열을 반환해주는 map은 굳이 필요없고 forEach로도 순회하기에 충분할것이다.
약수 구하는 방식을 더 빠르게 할 수 있을것같다.
참고 풀이 결과 - 1
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
제한사항에 따라서 반복문 조건으로 잘 넣기만 한다면 위에처럼 굳이 배열을 만들지않아도 각 숫자별로 순회할 수 있었다.
Number.isInterger는 인수가 정수인지 확인하여 true / false를 반환해준다.
Math.sqrt는 인수의 제곱근을 반환해준다.
인수의 제곱근이 정수일 경우 약수의 갯수가 홀수기때문에 뺄셈을,
정수가 아닐 경우 짝수기때문에 덧셈을 실행해준다.
멋있는 코드인거같다!
'코테' 카테고리의 다른 글
Lev.1 프로그래머스 3진법 뒤집기 (0) | 2023.03.21 |
---|---|
Lev.2 프로그래머스 이진 변환 반복하기 (0) | 2023.03.21 |
Lev.1 프로그래머스 나누어 떨어지는 숫자 배열 (0) | 2023.03.19 |
Lev.1 프로그래머스 정수 제곱근 판별 (0) | 2023.03.19 |
Lev.1 프로그래머스 푸드파이트 대회 (0) | 2023.03.10 |
Comments