
오늘의 학습
- C++ 강의
코드카타
약수의 개수가 짝수인 수는 더하고 홀수인 수는 빼는 간단한 문제이다.
int solution(int left, int right) {
int answer = 0;
for(int i=left; i<=right; i++)
{
int num = 0;
for(int j=1; j<=i; j++)
{
if(i%j==0) num += 1;
}
if(num%2==0)
{
answer += i;
}
else
{
answer -=i;
}
}
return answer;
}
이렇게 보니 코드가 좀 지저분해보인다. 방법이 없을까 생각하다가 Gemini에게 약수의 개수가 홀수인 수들의 특징을 물어보았다.
Gemini가 말하길, 약수의 개수가 홀수인 수들은 제곱수들이라고한다. 생각해보니 그렇다. 제곱수들만이 제곱되는 수 하나를 약수로 더 가지기 때문에 제곱수들의 약수만이 홀수이다. 그렇다면 이전에 공부했던 sqrt를 사용하면 코드를 더 간단하게 구성할 수 있을것이다!
int solution(int left, int right) {
int answer = 0;
for(int i=left; i<=right; i++)
{
int odd=sqrt(i);
answer += (odd * odd == i) ? -i : i;
}
return answer;
}
훨씬 깔끔하고 보기 좋다 ㅎㅎ
'내일배움캠프' 카테고리의 다른 글
| 내일배움캠프 언리얼트랙 13일차 (0) | 2026.05.09 |
|---|---|
| 내일배움캠프 언리얼트랙 12일차 (0) | 2026.05.07 |
| 내일배움캠프 언리얼트랙 10일차 (0) | 2026.05.04 |
| 내일배움캠프 언리얼트랙 9일차 (0) | 2026.04.30 |
| 내일배움캠프 언리얼트랙 8일차 (0) | 2026.04.29 |