[백준] 24416번 알고리즘 수업 - 피보나치 수 1 - 파이썬
·
백준/다이내믹 프로그래밍
https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net 풀이 실행횟수를 출력해주는 문제입니다. 다만 시간 초과를 방지하기 위해 PyPy3으로 제출해주시길 바랍니다. # 24416번 알고리즘 수업 - 피보나치 수 1 k = int(input()) ans_1 = 0 ans_2 = 0 def fib(n): global ans_1 ans_1 += 1 if (n == 1 or n == 2): return 1; else: return (fib(n ..
[백준][Python] 2748번 피보나치 수 2 - 코팩
·
백준/다이내믹 프로그래밍
https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 피보나치 수 구하는 문제를 다이나믹 프로그래밍을 통해서 풀어주면 됩니다. 테이블(이전 수를 저장해놓은 리스트)을 이용하여 재귀함수로 풀었을 때 중복되는 계산을 없애줍니다. # 2748번 피보나치 수 2 n = int(input()) d = [0] * 91 # 테이블 d[1] = 1 d[2] = 1 if n < 2: print(d[n]) else: for i..
[백준] 10026번 적록색약 - 파이썬
·
백준/DFS&BFS
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 문제는 BFS로 풀어주었습니다. 정상인 사람과 적록색약 인 사람이 구분할 수 있는 영역의 개수를 출력하면 되는 문제입니다. 적록색약인 사람은 빨간색(R)과 녹색(G)이 구분되지 않기에 한가지의 색으로만 보입니다. 그래서 적록색약의 사람이 보는 그림의 색 중에서 R을 G로 바꾸어주었습니다. 문자열 메서드 중 하나인 replace() 메서드를 사용해주었습니다. 그 이후에는 BFS를 진행해..
[백준] 11050번 이항 계수 1 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 풀이 factorial 함수를 구현해주어서 이항계수 식을 유도해서 풀어주었습니다. 출력결과
[백준] 10866번 덱 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 자료구조 덱의 기능을 구현해볼 수 있는 문제입니다. 덱의 메서드 공부와 함께 풀어주시면 좋겠습니다. # 10866번 덱 from collections import deque import sys n = int(input()) queue = deque() for _ in range(n): li = sys.stdin.readline().rstrip().split() order = ..
[백준] 2164번 카드2 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 리스트를 사용하면 시간초과가 뜨기에 자료구조 중 하나인 덱을 쓰셔야합니다. # 2164번 카드2 from collections import deque n = int(input()) cards = deque(list(range(1,n+1))) while(len(cards) >1): cards.popleft() move = cards.popleft() cards.append(move) print..
[백준] 4153번 직각삼각형 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 풀이 피타고라스의 정리를 안다면 문제를 푸는데 어려움이 없을 겁니다. 가장 큰 수를 찾는 방법은 max()나 sort()를 이용하여 푸시면 좋을 것 같습니다. # 4153번 직각 삼각형 import sys while 1: li = list(map(int, sys.stdin.readline().split())) if li == [0,0,0]: break li.sort() # 정렬을 통해서 리스트의 마지막 인덱스 자리..
[백준] 1181번 단어 정렬 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 정렬을 두 번 해주었습니다. 사전순으로 오름차순으로 정렬을 해준 뒤에 길이를 기준으로 정렬을 추가로 진행해주었습니다. 1. 오름차순으로 정렬(문제의 테스트 케이스 기준) but cannot hesitate i im it more no wait wont yours 2. 오름차순에 이어서 길이 기준으로 정렬 i im it no but more wait wont yours cannot ..
개발자 성현
개발새발 블로그