안녕하세요. 민쯔입니다.😊
이번에는 약수의 개수와 덧셈을 풀어보았습니다.
사실 이 문제 풀긴 풀었는데 제출 후 채점하기에서 테스트 1번이 계속 틀려서 결국 저보다 코드 훨 잘 치는 남친님한테 SOS 해서 해결했습니다...😢
function solution(left, right) {
var answer = 0;
for(let i=left; i<= right; i++){
let count = 0;
for(let j=1; j< i+1; j++){
if(i % j == 0) count++;
}
count % 2 == 0 ? answer += i : answer -= i
}
return answer;
}
이렇게 간단한데... 제가 겉멋만 들어서 reduce, map, for of 이런 거 쓰다가 산으로 갔어요... 충분히 쉽게 풀 수 있는걸 제가 왜 그렇게 풀었는지 모르겠네요.😢 기초가 중요하다는 거 다시 한번 반성 또 반성합니다...😂
// left부터 right까지의 모든 수 구하기
for(let i=left; i<= right; i++){
// left : 13, right : 17 이면 13, 14, 15, 16, 17 이 나옴
}
문제에서 "left부터 right까지의 모든 수들 중에서"라는 말이 있는데요. 첫 번째 예시에서 left 13, right 17이 주어진다면, 13, 14, 15, 16, 17 이겠죠?
그래서 13부터 17까지 for문으로 돌리면 for(let i=left; i<= right; i++) 쓰기게 되는 겁니다.
- for(let i=left; i<= right; i++) → for(let i=13; i<= 17; i++)
// left ~ right의 각각의 약수의 개수를 구하기
for(let i=left; i<= right; i++){ // left : 13일 경우 i = 13
let count = 0;
for(let j=1; j< i+1; j++){ // j는 1 ~ 13까지 반복
if(i % j == 0) count++; // j가 i의 약수가 맞을 경우 count는 1씩 증가
}
}
count 변수는 약수의 개수를 나타내는 변수입니다.
for(let j=0; j< i+1; j++)에서는 left 13, right 17일 경우
- i = 13이면 for(let j=1; j< 14; j++) 임으로 j는 1~13 (1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)이 됩니다.
if(i % j == 0) count++; 은 약수의 개수를 구하기 위한 코드 줄입니다.
- i % j == 0 : 약수를 구하는 방법
if(i % j == 0)가 해다 되는 경우 즉 i=13의 약수 일 경우 count++를 해서 i의 약수의 개수를 구합니다. 그러면서 left 13, right 17일 경우 13부터 17까지의 약수의 개수를 구하게 됩니다.
// 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수 구하기
for(let i=left; i<= right; i++){
let count = 0;
for(let j=1; j< i+1; j++){
if(i % j == 0) count++;
}
// 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수
count % 2 == 0 ? answer += i : answer -= i
}
count % 2 == 0 ? answer += i : answer -= i
여기서는 삼항 조건 연산자를 사용해서 구했는데요.
- count % 2 == 0 : 조건
- answer += i : true
- answer -= i : false
count % 2 == 0을 사용하여 짝수인지를 구하였고 짝수이면(참일 경우) 더하고 홀수면(거짓일 경우) 뺐습니다.
'코딩 > 프로그래머스 코딩테스트' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (0) | 2021.11.01 |
---|---|
[프로그래머스] 실패율 (0) | 2021.10.25 |
[프로그래머스] 예산 (0) | 2021.10.06 |
[프로그래머스] K번째수 (0) | 2021.10.02 |
[프로그래머스] 내적 (0) | 2021.09.24 |