Python_알고리즘/Silver III
-
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 = {} # ..
-
10974. [Python]모든 순열Python_알고리즘/Silver III 2023. 5. 21. 00:14
1. 문제 https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 256MB 순열 3. 파이썬 코드 from itertools import permutations # N의 갯수 N = int(input()) # 1~N 까지 수를 담을 리스트 num_list = [] for i in range(1,N+1): num_list.append(i) # N개의 갯수만큼 순열 생성 answer = list(permutations(num_list,N)) for j in answer: print(*j) 4. ..
-
1003. [Python]피보나치 함수Python_알고리즘/Silver III 2023. 5. 19. 22:51
1. 문제 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 2. 접근 방법 시간 제한: 0.25초 메모리 제한: 128MB 구현 3. 파이썬 코드 def fibonacci(): # 피보나치 함수에서 각각 0과 1이 나오는 횟수 num_list = [[1,0],[0,1]] # 최대 40 까지 오기 때문에 미리 리스트를 생성해둔다. for i in range(2,41): num_list.append([num_list[i-1][0]+num_list[i-2][0],num_list[i-1][1]+num_list[i-2][1]]) return num_..
-
1431. [Python]시리얼 번호Python_알고리즘/Silver III 2023. 4. 23. 00:04
1. 문제 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정렬 3. 파이썬 코드 N = int(input()) word_list = [] for _ in range(N): word_list.append(input()) # 0번 인덱스부터 N-1 까지 반복문을 통한 정렬 for i in range(N-1): for j in range(i+1,N): # 일단 우선 각 길이를 반환해줌..