본문 바로가기
프로그래머스/2단계

(Python/LV2) 점 찍기

by windy7271 2022. 12. 2.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/140107

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

 

첫 시도인 만큼 정답 맞추기에 집중했다.  62.5점

 

def solution(k, d):
    list = set()
    angle = d**2 # 제곱
    same_count = 0
    for i in range(0,d,k):
        for j in range(i,d+1,k):
            if (i**2)+(j**2) <=angle:
                list.add((i,j))
                if i == j:
                    same_count +=1

    return len(list) * 2 - same_count

 

내가 메모리를 줄이려고 노력한건 0,1,2,3,4, 를 절반만 구하고 뒤집으면 된다는 생각과 3,3 이런거는 same_count 에 넣어줘 빼주면 

된다고 생각하였다

하지만 역시 이중포문이라 그런지 시간초과

 

 

 

 

정답:

def soulution(k,d):
    count =0
    for i in range(0,d+1,k):
        y = (d**2) - (i**2)
        count += (int(y**0.5) // k) + 1
        
    return count
반응형

댓글