프로그래머스

    [프로그래머스, Python] 두 원 사이의 정수 쌍

    정답 코드 import math def solution(r1, r2): num = 0 for x in range(1, r2+1): y_max = math.floor(math.sqrt(r2**2 - x**2)) y_min = 0 if x >= r1 else math.ceil(math.sqrt(abs(r1**2 - x**2))) num += y_max - y_min + 1 return num * 4 풀이 먼저, 문제에서 제시해 준 그림을 보면, 작은 원(r1)이나 큰 원(r2)사이의 정수를 모두 구하는 문제라는 것을 쉽게 알 수 있습니다. 이때, 모든 정수 쌍을 구하는 것이 아닌, 같은 패턴의 반복이므로 하나의 사분면의 정수 쌍을 모두 구한 뒤 *4를 해주면 답을 더 쉽게 구할 수 있습니다. 저는 1사분면을..

    [프로그래머스, Python] 등굣길

    프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 학교(m,n)에서 집(0,0)으로 가는 방법 def dfs(x, y, dp): if x < 0 or y < 0 or dp[y][x] == -1: return 0 if dp[y][x] == 0: dp[y][x] = dfs(x - 1, y, dp) + dfs(x, y - 1, dp) return dp[y][x] def solution(m, n, puddles): dp = [[0 for _ in range(m)] for _ in range(n)] for p in puddles: x, y = p dp[y-1][..

    [프로그래머스, Python] 광물 캐기

    정답 코드 def solution(picks, minerals): ans = [] tired = [[1, 1, 1], [5, 1, 1], [25, 5, 1]] tools = {"diamond" : 1, "iron": 2, "stone": 3} def dfs(minerals, picks, tired_rate): # 종료 조건 if sum(picks) == 0 or minerals == []: ans.append(tired_rate) return m = minerals[:5] # tool 을 picks에서 감소 for t in range(3): if picks[t] > 0: picks[t] -= 1 tired_rate_val = tired_rate_calculate(t, m) dfs(minerals[5:],..