Python_알고리즘/Silver III
-
1448. [Python]삼각형 만들기Python_알고리즘/Silver III 2023. 6. 6. 21:19
1. 문제 https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정렬 그리디 알고리즘 3. 파이썬 코드 import sys # input 값이 많으므로 sys 사용 input = sys.stdin.readline N = int(input()) # input 값을 담을 리스트 num_list = [] for _ in range(N): num_list.append(int(..
-
1904. [Python]01타일Python_알고리즘/Silver III 2023. 6. 5. 22:59
1. 문제 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 2. 접근 방법 시간 제한: 0.75초 메모리 제한: 256MB DP(다이나믹 프로그래밍) 3. 파이썬 코드 N = int(input()) dp = [1, 2] for i in range(2,N): dp.append((dp[i-2]+dp[i-1])%15746) print(dp[N-1]) 4. 문제를 풀고난 후 생각 문제를 읽어본 후 직접 타일의 갯수에 따른 변화를 생각해보며 코드 구현을 생각..
-
2312. [Python]수 복원하기Python_알고리즘/Silver III 2023. 6. 4. 22:22
1. 문제 https://www.acmicpc.net/problem/2312 2312번: 수 복원하기 첫째 줄에 테스트 케이스의 수가 주어진다. 각 테스트 케이스마다 양의 정수 N (2 ≤ N ≤ 100,000)이 주어진다. www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정수론 3. 파이썬 코드 # 테스트 케이스 갯수 N = int(input()) # 갯수만큼 반복문 시행 for _ in range(N): # 소인수 분해할 수 number = int(input()) # 각각 몇개가 들어있는지 체크할 딕셔너리 num_dict = {} # 시작값 2부터 check = 2 # input으로 들어온 값이 1보다 큰경우 계속 반복문 while number>1: # 만약 c..
-
2149. [Python]암호 해독Python_알고리즘/Silver III 2023. 5. 30. 22:38
1. 문제 https://www.acmicpc.net/problem/2149 2149번: 암호 해독 어떤 문장을 키를 이용하여 다음과 같이 암호화하려 한다. 암호화하기 전의 문장을 평문이라 하며, 암호화 된 문장은 암호문이라고 한다. 키, 평문, 암호문은 모두 영어 대문자로 된 공백 없는 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정렬 3. 파이썬 코드 # 키를 담을 변수 keyword = input() # 암호문을 담을 변수 texts = input() # 키의 길이 keyword_length = len(keyword) # 암호문의 길이 texts_length = len(texts) # 암호문의 길이에서 키의 길이를 나눠준 변수 => 리스트 길이때문에 ans..
-
2407. [Python]조합Python_알고리즘/Silver III 2023. 5. 26. 22:35
1. 문제 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 조합 3. 파이썬 코드 # 조합을 위한 팩토리얼 함수 ( 재귀 ) def factorial(num): if num == 1: return 1 else: return num*factorial(num-1) N,M = map(int,input().split()) print(factorial(N)//(factorial(M)*factorial(N-M))) 4. 문제를 풀고난 후 생각 조합 문제는 팩토리얼의 대표적인 문제인 것 같다. 팩토리얼에 관한 개념..
-
1614. [Python]영식이의 손가락Python_알고리즘/Silver III 2023. 5. 26. 00:19
1. 문제 https://www.acmicpc.net/problem/1614 1614번: 영식이의 손가락 1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3 위와같이 세면 총 15를 셀 수 있다. 2번째 손가락을 3번 이용했으니 더 이상 사용할 수 없다. www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 구현 3. 파이썬 코드 # N 값과 check 값으로 몇번째 손가락 몇번째인지 확인 N = int(input()) check = int(input()) # 만약 첫번째 손가락의 경우 if N == 1: # 1부터 시작해서 2,3,4,5,4,3,2 순으로 8번만에 돌아오기 떄문에 8*check 를 해줌 print(8*check) # 두번째 손..
-
2012. [Python]등수 매기기Python_알고리즘/Silver III 2023. 5. 24. 22:13
1. 문제 https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 256MB 그리디 알고리즘 정 3. 파이썬 코드 import sys # 인풋이 많기 떄문에 sys로 받는다 input = sys.stdin.readline N=int(input()) # 숫자 리스트 생성 num_list = [] for _ in range(N): num_list.append(int(input())) # 들어온 숫자를 오름차순 정렬..
-
1735. [Python]분수 합Python_알고리즘/Silver III 2023. 5. 23. 21:24
1. 문제 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 유클리드 호제법 3. 파이썬 코드 import math # 분수로 나타낼 수들을 각각 input 으로 받아온다 A,B = map(int,input().split()) C,D = map(int,input().split()) # 분모의 최소공배수를 구한다 lcm = math.lcm(B,D) # 분자에 각각 분모의 최소공배수에서 기존의 분모를 나눈 몫을 곱해준다 A = A*(lcm//B) C = C*(lcm//D) # 두 분자의 합을 구한다 total = A+C # 분자와 분모가 약분이 되는지 확인 gcd = math.gcd(total,lcm) # 분자와 분모의 최대공약수로 나눠준다. print(total//gcd,lcm//gcd) 4. 문..
-
1935. [Python]후위 표기식2Python_알고리즘/Silver III 2023. 5. 23. 02:26
1. 문제 https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 스택 3. 파이썬 코드 N = int(input()) word = input() num_list = [] for _ in range(N): num_list.append(int(input())) # 스택을 이용하여 값을 저장할 리스트 stack = [] # 딕셔너리를 통한 문자와 변수 매칭 num_dict = {} # ..