[프로그래머스] Lv1. 약수의 개수와 덧셈

5663 단어 pspythonps

문제

접근 방법

  • 약수의 개수가 홀수인 수는 어떤 수의 제곱수
  • 제곱수만 찾아 빼주고 나머지는 더하기
    - sqrt(i) 와 int(sqrt(i))가 같으면 제곱수

이전에 C++로 풀었던 내용

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int left, int right) {
    int answer = 0;
    
    for(int i = left; i <= right; i++){
        sqrt(i) == (int)sqrt(i) ? answer -= i : answer += i;
    }
    
    return answer;
}

나의 풀이

import math

def solution(left, right):
    answer = 0
    
    for i in range(left, right+1):
        if math.sqrt(i) == int(math.sqrt(i)):
            answer -= i
        else:
            answer += i
    
    return answer

다른 사람의 풀이

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

math의 sqrt 대신 0.5 제곱을 사용해도 됨!!

좋은 웹페이지 즐겨찾기