본문 바로가기

TIL

2024/02/28 TIL

오늘 학습한 내용

[알고리즘]

약수의 개수와 덧셈

 

로직 : 두 정수의 길이를 체크해서 정수의 약수가 짝수면 더하고 홀수면 빼는 것을 길이만큼 반복해야 겠다.

생각자체는 금방 떠올렸는데 문제는 이것을 코드로 구현하는데서 막혔다.

2중 반복문을 쓰면 될 것 같다고 생각은 했는데 약수가 짝수인지 홀수인지를
체크하는 과정에서 count의 초기화를 어디서 해야하는지 감을 잡지 못 했다.
한참을 고민하다 결국 질문하기 탭을 눌러서 다른 사람이 질문한 내용을 보고 감을 잡았다.

using System;

public class Solution 
{
    public int solution(int left, int right) 
    {
        int answer = 0;
        int length = (right - left) + 1;

        int count = 0;

        for(int i = 0 ; i < length; i++)
        {
            int num = left + i;

            for (int j = 1 ; j <= num; j++)
            {
                if(num % j == 0)
                {
                    count++;
                }
            }

            if (count % 2 == 0)
            {
                answer += num;
            }
            else
            {
                answer -= num;
            }
            count = 0;
        }
        return answer;
    }
}

 

다른 사람의 풀이

using System;

public class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        int count = 0;

        for (int i = left; i <= right; i++)
        {
            for (int j = 1; j <= i; j++)
            {
               if (i % j == 0) count++;
            }
            answer += (count % 2 == 0) ? i : i * -1;
            count = 0;
        }

        return answer;
    }
}

 

오늘의 회고

 

해야 할 일

1. 프로젝트 개선하기

'TIL' 카테고리의 다른 글

2024/03/07 TIL  (0) 2024.03.07
2024/03/06 TIL  (0) 2024.03.06
2024/02/26 TIL  (0) 2024.02.26
2024/02/23 TIL  (0) 2024.02.23
2024/02/21 TIL  (0) 2024.02.21