Python_알고리즘
-
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_..
-
10826. [Python]피보나치 수 4Python_알고리즘/Silver V 2023. 5. 17. 22:33
1. 문제 2. 접근 방법 시간 제한: 1초 메모리 제한: 256MB 다이나믹 프로그래밍 3. 파이썬 코드 # 피보나치 수열구하는 함수 def fibo(num): num_list = [0, 1] if num < 2: return num_list[num] else: for i in range(2, num + 1): num_list.append(num_list[i - 1] + num_list[i - 2]) return num_list[num] n = int(input()) print(fibo(n)) 4. 문제를 풀고난 후 생각 다이나믹 프로그래밍의 제일 기초적인 문제로 피보나치 수열을 구현하는 것이다. 0, 1 번째 숫자만 주어진 후 내가 넣은 n 값까지만 구하는 방식으로 구현을 진행하였고, 메모리도 유동적..
-
1057. [Python]토너먼트Python_알고리즘/Silver IV 2023. 5. 16. 23:10
1. 문제 https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 512MB 규칙 찾아서 해결 3. 파이썬 코드 N,jimin,hansoo = map(int,input().split()) # 라운드 체크 round = 1 # N을 계속해서 나눠가기때문에 0이아닌경우 까지 while N != 0: # 지민이가 큰지 한수가 큰지 모르기 때문에 이런 조건 설정함 if jimin > hansoo: # 한수가 홀수이고 ..
-
1544. [Python]사이클 단어Python_알고리즘/Silver IV 2023. 5. 15. 22:17
1. 문제 https://www.acmicpc.net/problem/1544 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 브루트 포스 정렬 3. 파이썬 코드 N = int(input()) # 문자를 저장할 리스트 word_list = [] # 문자열 저장 for _ in range(N): word_list.append(input()) # 최종적으로 사용할 리스트 total_list = [] # 리스트의 문자를 한개씩 반복해가는 반복문 for i in..