[BOJ/Python] 2133번: 타일 채우기 | DP bottom-up
·
Program Solving/Python
https://www.acmicpc.net/problem/2133 문제3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력첫째 줄에 경우의 수를 출력한다.  코드n = int(input())dp = [1, 3, 11]if n % 2 == 1: print(0)elif n  풀이위를 통해 dp[k] = dp[k-1] X dp[1] + 2 X (dp[0] + dp[1] + ... + dp[k-2]) 와 같은 점화식을 얻을 수 있었음.n이 홀수일 때는 무조건 답이 0이므로 dp 리스트에 n//2 인덱스 자리에 저장함.항상 2가지를 더해줘야 하므로 dp[0]엔 1을 저장해두었음.
[BOJ/Python] 11054번: 가장 긴 바이토닉 부분 수열 | LBS
·
Program Solving/Python
https://www.acmicpc.net/problem/11054 문제수열 S가 어떤 수 Sk를 기준으로 S1    > Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다.예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다.수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 프로그램을 작성하시오. 입력첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ ..
[BOJ/Python] 2659번: 십자카드 문제
·
Program Solving/Python
https://www.acmicpc.net/problem/2659  문제 위와 같은 십자모양의 한 장의 카드에서, 네 모서리에 1 이상 9 이하의 숫자가 하나씩 씌여 있다. 이 네 개의 숫자 중에는 같은 숫자도 있을 수 있다.모든 가능한 십자 카드가 주어질 때, 각각의 카드는 다음과 같은 '시계수'라는 번호를 가진다. 시계수는 카드의 숫자들을 시계 방향으로 읽어서 만들어지는 네 자리 수들 중에서 가장 작은 수이다. 위 그림의 카드는 시계방향으로 3227, 2273, 2732, 7322로 읽을 수 있으므로, 이 카드의 시계수는 가장 작은 수인 2273이다.입력으로 주어진 카드의 시계수를 계산하여, 그 시계수가 모든 시계수들 중에서 몇 번째로 작은 시계수인지를 알아내는 프로그램을 작성하시오.예를 들어서, 다..
[프로젝트 회고] TravelStar - 여행별
·
회고록
2025년 1-2월 동안 연합동아리에서 프로젝트를 진행하였다! 첫 프로젝트 였던 만큼 초반에 걱정도 많았고, 진행하면서 얻어가는 것도 많았다. 프로젝트는 PM(1명), 디자이너(1명), 백엔드(Node.JS 4명), 프론트엔드(WEB 4명) 이렇게 10명이서 진행하였다. 프로젝트 전 스터디하는 동안 어떻게든 미션을 해가려고 아득바득 열심히 했지만 정작 프로젝트 할 때는 알고있는 게 없었고, 스터디 때 배운 게 0.5라고 하면 프로젝트 하면서 배운 게 10인 것 같다!!! 그래서 스터디 도중에 블로그에 정리하려고 노력했지만, 한 번은 거의 다 작성했던 블로그가 날아가버려서..... 그 후로 기록을 하지 못했다.  2일 전에 끝난(아직안끝나긴했는데) 아주 따끈따끈한 프로젝트 과정을 돌아봐 정리하려고 한다! ..
[BOJ/Python] 11444번: 피보나치 수 6 | 도가뉴 항등식
·
Program Solving/Python
https://www.acmicpc.net/problem/11444 입력첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. 출력첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다.  코드from collections import defaultdictn = int(input())dp = defaultdict(int)dp[0] = 0dp[1] = 1dp[2] = 1def fibonacci(n): if not dp[n]: if n % 2 == 0: fn = fibonacci(n//2) fn_1 = fibonacci(n//2 - 1) dp[n] = ..
[BOJ/Python] 4948번: 베르트랑 공준 | 에라토스테네스의 체
·
Program Solving/Python
https://www.acmicpc.net/problem/4948 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다.입력의 마지막에는 0이 주어진다. 출력각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.  코드def sieve_of_eratosthenes(m, n): is_prime = [True] * (n + 1) is_prime[0], is_prime[1] = False, False for i in range(2, int(n ** 0.5) + 1): if is_prime[i]: for j in range(i * i, n + 1, i): ..
[BOJ/Python] 1934: 최소공배수 | 유클리드 호제법 (Euclidean Algorithm)
·
Program Solving/Python
https://www.acmicpc.net/problem/1934 입력첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000) 출력첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.  코드def gcd(m, n): while n != 0: t = m%n m, n = n, t return abs(m)t = int(input())for _ in range(t): a, b = map(int, input().split()) print((a * b) // gcd(a, b))   유클리드 호제법2개의 자연수의 최대공..
[BOJ/Python] 2166번: 다각형의 면적 | 신발끈 공식
·
Program Solving/Python
https://www.acmicpc.net/problem/2166 입력첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다. 출력첫째 줄에 면적을 출력한다. 면적을 출력할 때에는 소수점 아래 둘째 자리에서 반올림하여 첫째 자리까지 출력한다.  코드n = int(input())arr = []for i in range(n): arr.append(tuple(map(int, input().split())))area = 0for i in range(n): x1, y1 = arr[i] x2, y2 = arr[(i + 1) % n] area += (x1 * y2) - (x2 * y1)pr..
[BOJ/Python] 15552번: 빠른 A+B | Python 빠른 입출력
·
Program Solving/Python
https://www.acmicpc.net/problem/15552 입력첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. 출력각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.  코드import syst = int(sys.stdin.readline().strip())for i in range(t): a, b = map(int, sys.stdin.readline().strip().split()) print(a+b) Python 빠른 입출력 입력n = sys.stdin.readline().strip() 출력sys.stdout.write(answer)
[BOJ/Python] 1991번: 트리 순회
·
Program Solving/Python
https://www.acmicpc.net/problem/1991 입력첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현한다. 출력첫째 줄에 전위 순회, 둘째 줄에 중위 순회, 셋째 줄에 후위 순회한 결과를 출력한다. 각 줄에 N개의 알파벳을 공백 없이 출력하면 된다.  코드import sysn = int(sys.stdin.readline().strip())tree = {}for i in range(n): root, left, right = sys.stdin..