Python_알고리즘
-
1449. [Python]수리공 항승Python_알고리즘/Silver III 2023. 6. 14. 23:07
1. 문제 https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 그리디 알고리즘 3. 파이썬 코드 N,L = map(int,input().split()) # 테이프 붙이는 위치 tape_list = list(map(int,input().split())) # 1000까지 존재하는 테이프 위치 tapes = [0]*1001 # 테이프를 붙인 위치 표시 for i in tape_l..
-
2346. [Python]풍선 터뜨리기Python_알고리즘/Silver III 2023. 6. 13. 23:12
1. 문제 https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 4MB 자료 구 3. 파이썬 코드 # 풍선 갯수 N = int(input()) # 풍선에 적힌 번호 num_list = list(map(int,input().split())) # 풍선 번호와 인덱스 저장 리스트 check_list = [] for i,v in enumerate(num_list): check_list.app..
-
2371. [Python]파일 구별하기Python_알고리즘/Silver III 2023. 6. 11. 22:18
1. 문제 https://www.acmicpc.net/problem/2371 2371번: 파일 구별하기 메모리에 N개의 파일이 저장되어 있다. 이 문제에서는 편의상 각각의 파일을 수열과 같이 생각하자. 이와 같은 파일들을 구별하기 위해서는 두 개의 파일을 맨 끝까지 읽어보는 작업을 수행해야 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 튜플 브루트포스 3. 파이썬 코드 import sys # 파일의 갯수 N = int(input()) # 각 파일별 길이 file_lengths = [] for _ in range(N): # 파일을 리스트 형태로 받아옴 num_list = list(map(int, input().split())) file_lengths.append(n..
-
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..
-
2667. [Python]단지번호붙이기Python_알고리즘/Silver I 2023. 6. 4. 03:37
1. 문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 128MB DFS(너비 우선 탐색) 3. 파이썬 코드 N = int(input()) # 매트릭스 담을 리스트 matrix = [list(map(str,input())) for _ in range(N)] # 방문했는지 체크 여부 visited = [[False] * N for _ in range(N) ] # 상하좌우 움직임 dx = [-1,0..
-
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..
-
1015. [Python]수열 정렬Python_알고리즘/Silver IV 2023. 5. 28. 01:05
1. 문제 https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정렬 3. 파이썬 코드 N = int(input()) A = list(map(int,input().split())) # 리스트 길이를 확인해서 정답 리스트 생성 A_length = len(A) # 0으로 이루어진 길이 리스트 생성 P = [0]*A_length # 정렬한 리스..