링크: https://www.acmicpc.net/problem/1003

def fibonacci(n):
    if n == 0:
        return 1, 0
    elif n == 1:
        return 0, 1

    prev_0, prev_1 = 1, 0
    present_0, present_1 = 0, 1

    for i in range(n - 1):
        prev_0, prev_1, present_0, present_1 = present_0, present_1, present_0 + prev_0, present_1 + prev_1

    return present_0, present_1

n = int(input())

for i in range(n):
    input_n = int(input())
    answer = fibonacci(input_n)
    print(answer[0], answer[1])
  • 동적계획법을 사용하는 피보나치 풀이는 워낙 많이 봐서 외운지라 어렵지 않게 풀었다. 다만 이 문제는 피보나치 수열을 직접 구현하는 것이 아니라 0과 1을 호출하는 횟수를 구하는 문제라 조금은 신선했던 것 같다.
  • 나는 0을 호출하는 횟수와 1을 호출하는 횟수를 따로따로 변수로 선언해서 prev_0, prev_1, present_0, present_1로 4개의 변수를 사용했는데 좀 더 간결한 풀이가 있지 않을까 싶어 아쉬운점이 있다.

링크: https://www.acmicpc.net/problem/15649

from collections import deque
n, m = map(int, input().split())

lst = [str(i) for i in range(1, n + 1)]
queue = deque([[str(i)] for i in lst])
answer = []

while queue:
    pop = queue.popleft()

    if len(pop) == m:
        print(' '.join(pop))
        continue

    for i in lst:
        if i not in pop:
            temp = pop + [i]
            queue.append(temp)
  • 사실 파이썬에는 itertools 패키지에 permutation을 만들 수 있는 메소드가 있어 직접 구현할 필요는 없으나 BFS를 연습해볼 생각으로 일부러 BFS로 풀이했다.
  • collections의 deque를 사용하여 큐를 만들고 그 안에 시작할 수 있는 모든 노드를 시작점으로 한 route를 리스트로 넣어 구현했다.

2022-02-25 프로그래머스 데브코스

오늘 배운 것

  • 데브코스

    • 트랜잭션
    • 유용한 SQL 함수

    깨달은 것

    SQL을 이미 배웠음에도 트랜잭션이란 개념을 좀 대충알고 있었는데 이번 기회로 트랜잭션을 확실히 알게 되어서 좋았다. commit이라는 단어가 쓰여서 깃허브 명령어가 연상되기도 했다.

'TIL' 카테고리의 다른 글

2022-03-22 TIL  (1) 2022.03.23
2022-02-22 TIL  (0) 2022.02.23
2022-02-21 TIL  (0) 2022.02.22
2022-02-19 TIL  (0) 2022.02.20
2022-02-18 TIL  (0) 2022.02.19

+ Recent posts