본문 바로가기

전체 글

(152)
[프로그래머스/파이썬] 하노이의 탑 나의 풀이 (시간 초과) def solution(n): c1 = [0, 1, 3, 2] c2 = [0, 2, 1, 3] dp = [[]] * n dp[0] = [[1,3]] for i in range(1, n): for x in dp[i - 1]: dp[i].append([c1[x[0]], c1[x[1]]]) dp[i].append([1, 3]) for x in dp[i - 1]: dp[i].append([c2[x[0]], c2[x[1]]]) return dp[-1] - 횟수로 이해하고 dp로 해결하고자 했다. 나의 풀이 (재귀) def hanoi(n, a, b, c): if n == 1: return [[a, c]] return hanoi(n - 1, a, c, b) + [[a, c]] + hanoi(..
[프로그래머스/파이썬] 피보나치 수 나의 풀이 def solution(n): a, b = 0, 1 for i in range(1, n): a, b = b, (a + b) % 1234567 return b
[프로그래머스/파이썬] 최솟값 만들기 나의 풀이 def solution(A,B): answer = 0 A.sort() B.sort(reverse=True) for a, b, in zip(A, B): answer += a * b return answer
[프로그래머스/파이썬] 최댓값과 최솟값 나의 풀이 def solution(s): n = sorted(list(map(int, s.split(' ')))) return f'{n[0]} {n[-1]}'
[프로그래머스/파이썬] 주차 요금 계산 나의 풀이 from collections import defaultdict def solution(fees, records): data = defaultdict(list) answer = [] for record in records: time, car, io = record.split(' ') data[car].append(time) for car, record in sorted(data.items()): if len(record) % 2: record.append('23:59') time = 0 for i in range(0, len(record), 2): Hi, Mi = record[i].split(':') Ho, Mo = record[i + 1].split(':') time += (int(Ho) -..
[프로그래머스/파이썬] 줄 서는 방법 나의 풀이 (시간 초과) from itertools import permutations def solution(n, k): return list(permutations(range(1, n + 1), n))[k - 1] 나의 풀이 (최종) def solution(n, k): pool = [i for i in range(1, n + 1)] answer = [] num = 1 k -= 1 for i in range(2, n): num *= i for i in range(n - 1, 0, -1): answer.append(pool[k // num]) pool.remove(pool[k // num]) k %= num num //= i answer.append(pool[0]) return answer - math ..
[프로그래머스/파이썬] 숫자의 표현 나의 풀이 def solution(n): answer = 0 for i in range(1, n + 1, 2): if n % i == 0: answer += 1 return answer 간결한 풀이 def expressions(num): return len([i for i in range(1,num+1,2) if num % i is 0]) 모든 경우의 수에 숫자가 있는지 찾는 풀이 def expressions(num): answer = 0 for i in range(1, num + 1): s = 0 while s < num: s += i i += 1 if s == num: answer += 1 return answer
[프로그래머스/파이썬] 숫자 블록 나의 풀이 def solution(begin, end): answer = [] for n in range(begin, end + 1): if n == 1: answer.append(0) continue for j in range(2, int(n ** 0.5) + 1): if n % j == 0 and n // j
[프로그래머스/파이썬] k진수에서 소수 개수 구하기 나의 풀이 import re def solution(n, k): num = '' answer = 0 while n > 0: q, r = divmod(n, k) num = str(r) + num n = q pool = list(map(int, re.findall('[1-9]+', num))) for num in pool: for i in range(2, int(num ** 0.5) + 1): if num % i == 0: break else: if num != 1: answer += 1 return answer - 아라토스테네스의 체에서 +1 을 안해줄때 문제가 생겼다. 아마 제곱수의 경우, 부동소수점 오차에 의한 것으로 추측된다 - 앞으론 꼭 +1을 해줄 것.
[프로그래머스/파이썬] 멀리 뛰기 나의 풀이 def solution(n): if n == 1: return 1 a, b = 1, 2 for i in range(2, n): a, b = b, (a + b) % 1234567 return b 재귀 함수를 이용한 풀이 def jumpCase(num): return (jumpCase(num-1) + jumpCase(num-2)) if num > 2 else num - 지금은 오답일 풀이(런타임)이지만 창의적이라 생각해서 소개하고자 함

반응형