본문 바로가기

> 알고리즘 문제 풀이/BOJ51

7490-0 만들기 (python) - 재귀함수 사용 - 무턱대고 전부가 아니라 무엇을 재귀함수를 이용해 구할 것인가 생각해보며 풀면 좋다! import copy def recursive(array, n): if len(array) == n: operators_list.append(copy.deepcopy(array)) return array.append(' ') recursive(array, n) array.pop() array.append('+') recursive(array, n) array.pop() array.append('-') recursive(array, n) array.pop() tc = int(input()) for _ in range(tc): operators_list = [] n = int(input()) recurs.. 2020. 10. 11.
2747-피보나치 수 (python) 1. 내가 작성한 코드 (DP를 이용 1) x = int(input()) if x 1: cache = [0] * (x+1) cache[0] = 0 cache[1] = 1 for x in range(2, x+1): cache[x] = cache[x-1] + cache[x-2] print(cache[x]) 2. 1번 통과 후 참고한 코드 (DP를 이용-2) n = int(input()) a, b = 0, 1 while n > 0: a, b = b, a + b n -= 1 print(a) - 출처 : FASTCAMPUS 2020. 10. 11.
10989-수 정렬하기 3 (python) 1. 계수 정렬(Counting sort): 데이터의 개수가 많은 대신 범위가 좁을 때 사용할 수 있는 정렬 알고리즘 - 배열의 인덱스가 곧 데이터의 값이라고 생각하면 된다 - 이제 데이터가 나올 때마다 해당 인덱스의 값을 증가시킨다 (해당 인덱스의 값 = 데이터의 개수) 2. 데이터 개수가 많을 땐 sys.stdin.readline() 함수를 사용해야 한다 (input() 함수에 비해 더 빠르기 때문) 3. PyPy3은 Python3에 비해 시간은 빠르지만 메모리를 많이 소모한다. 이 문제는 메모리 제한이 더 강하기 때문에, Python3를 이용해 제출한다 import sys n = int(input()) nums = [0] * 10001 for _ in range(n): x = int(sys.stdi.. 2020. 10. 11.
11650-좌표 정렬하기 (python) - python의 기본 정렬 라이브러리(sorted 등)는 key 설정을 하지 않으면 튜플의 인덱스 순서대로 오름차순 정렬한다 n = int(input()) positions = [] for _ in range(n): data = input().split() positions.append((int(data[0]), int(data[1]))) positions_sorted = sorted(positions) for p in positions_sorted: print(p[0], p[1]) 2020. 10. 11.