혜랑's STORY

[HackerRank] Sherlock and Divisiors 본문

2021 SISS 21기 활동/여름방학 C언어

[HackerRank] Sherlock and Divisiors

hyerang0125 2021. 7. 18. 00:03
2주차 C언어

1. 문제

2. 풀이

int divisors(int n) {
    int cnt = 0;
    for(int i=1; i<=sqrt(n); i++){
        if(n%i == 0){
            if(i%2 == 0) ++cnt;
            if((n/i)%2 == 0 && (n/i) != i) ++cnt;
        }
    }
    return cnt;
}
  • 자기 자신을 제외하고 절반을 초과하는 숫자에서 2로 나누었을 때 나머지가 0이 되는 숫자는 나올 수 없다. 따라서 n의 제곱근만큼 for문을 실행한다.
  • n이 i로 나누어 떨어질 때, i가 2로 나누어 떨어진다면 구해야 하는 숫자이므로 cnt를 1 증가시킨다.
  • 만약 n을 i로 나눈 값이 2로 나누어 떨어지고, n을 i로 나눈 값이 i가 아니라면 이 역시 cnt를 1 증가시킨다.
  • cnt를 반환하고 함수를 종료한다.

 

3. 결과

'2021 SISS 21기 활동 > 여름방학 C언어' 카테고리의 다른 글

[HackerRank] Pangrams  (0) 2021.07.24
[HackerRank] Caesar Cipher  (0) 2021.07.24
[HackerRank] Birthday Cake Candles  (0) 2021.07.18
[HackerRank] Bill Division  (0) 2021.07.11
[HackerRank] Handshake  (0) 2021.07.11