본문 바로가기

개발/알고리즘23

[백준] #2747 피보나치 수 www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된 www.acmicpc.net n = int(input()) mem = [0]*(n+1) def F(num): if mem[num] > 0: return mem[num] if num == 0 or num == 1: return num mem[num] = F(num-1) + F(num-2) return mem[num] print(F(n)) * 재귀함수를 이용해서 풀었다 n = int(input()) a, b .. 2020. 10. 28.
[백준] #10989 수 정렬하기 www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net * 개수는 무수히 많고 범위가 정해져있는 경우 계수정렬을 이용하여 문제를 푼다 a = [0] * 10001 res = [] n = int(input()) for _ in range(n): a[int(input())] += 1 for i in range(10001): if a[i] == 0: continue for _ in range(a[i]): print(i) * 기존input() 함수를 사용하면 시간초과 에러가 발생한다 imp.. 2020. 10. 28.
[백준] #11650 좌표 정렬하기 www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net n = int(input()) a = [] for _ in range(n): a.append(tuple(map(int, input().split(' ')))) a = sorted(a) for x, y in a: print(x, y) 2020. 10. 28.
[백준] #10814 나이순 정렬 www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net n = int(input()) a = list() for _ in range(n): a.append(tuple(input().split(' '))) a.sort(key=lambda x:int(x[0])) for age, name in a: print(age, name) * sort 함수의 key를 사용하여 나이순으로만 정렬한다 n = int(input()) array = [] for _ in range(n): inp.. 2020. 10. 28.