Python_알고리즘/Silver III
-
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): # 일단 우선 각 길이를 반환해줌..
-
1788. [Python]피보나치 수의 확장Python_알고리즘/Silver III 2023. 4. 19. 01:43
1. 문제 https://www.acmicpc.net/problem/1788 1788번: 피보나치 수의 확장 첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 다이나믹 프로그래밍 3. 파이썬 코드 def fibonacci(num): # 양수일때 피보나치 리스트 dp = [0, 1] # 음수일 경우 피보나치 리스트 dp_ma = [0, 1, -1] # 음수에서 절대값 구하기 위해서 사용되는 변수 check = 0 # n 값이 1000000을 넘지 않는다 했..
-
1515. [Python]수 이어 쓰기Python_알고리즘/Silver III 2023. 4. 14. 00:21
1. 문제 https://www.acmicpc.net/problem/1515 1515번: 수 이어 쓰기 세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다. 세준 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 브루트 포스 3. 파이썬 코드 answer = input() # 1부터 ~ N 까지 값 변수 cnt = 1 # 리스트 인덱스 index = 0 # 언제까지 반복할지 모르기때문에 while while True: # 10 이상일 경우 자리수마다 나눠서 값을 비교해야기 때문에 if cnt >= 10: # 두자리 수 이상일 경우 각 ..
-
14425. [Python]문자열 집합Python_알고리즘/Silver III 2023. 3. 1. 00:15
1. 문제 https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 1536MB 탐색 3. 파이썬 코드 import sys input = sys.stdin.readline N,M = map(int,input().split()) # 갯수 세는 변수 cnt = 0 # 체크할 리스트 check_list = [] # 단어 저장리스트 word_list= [] for _ in rang..
-
2108. [Python]통계학Python_알고리즘/Silver III 2023. 2. 25. 00:14
1. 문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 256MB 구현 정렬 3. 파이썬 코드 import sys input = sys.stdin.readline N = int(input()) # sys.maxsize 사용할 경우 python 에서 낼 수 있는 최대값을 불러올 수 있다고 한다. min_value = sys.maxsize max_value = -sys.maxsize # 모든 값들을 더해줄 변수..
-
1463. [Python]1로 만들기Python_알고리즘/Silver III 2023. 2. 11. 22:51
1. 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 2. 접근 방법 시간 제한: 0.15초 (python 3 => 1.5초) 메모리 제한: 128MB DP(Dynamic Programming) 3. 파이썬 코드 def answer(num): # 0, 1 인 경우는 count 되는 값이 없어서 0 # 2, 3 인 경우는 한번씩 나누는 값 1이다. # 외의 10^6 까지 값이 존재하므로 10^6+1 갯수 리스트 생성 num_list = [0,0,1,1] + [0]*(10**6-2) # 4부터 시작하는 반복문 생셩 for i in range(4, 10**6..
-
2579. [Python]계단 오르기Python_알고리즘/Silver III 2023. 2. 6. 01:21
1. 문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 128MB 규칙 파악 DP 3. 파이썬 코드 N = int(input()) # 계단의 값 리스트 배열 생성 work_list = [0] # 각 계단의 최대값 저장 배열 생성 max_list = [0]*301 # 계단의 값 추가 for _ in range(N): work_list.append(int(input())) # 계단의 최대 칸 수만큼 반복문 시..