본문 바로가기

알고리즘 (Python)/이것이 코딩 테스트다 with 파이썬

(50)
[구현 알고리즘] 문자열 재정렬 - 파이썬(python) 문자열 재정렬 난이도 : 下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = input() munja, sutja = [], [] for i in n: if i.isdecimal(): sutja.append(i) else: munja.append(i) munja.sort() sum = 0 for i in sutja: sum = sum + int(i) munja.append(str(sum)) print(''.join(munja)) 예시 data = input() result = [] value = 0 # 문자를 하나씩 확인하며 for x in data: # 알파벳인 경우 결과 리스트에 삽입 if x.isalpha(): result.append(x) # 숫자는 따로 더하기 ..
[구현 알고리즘] 럭키 스트레이트 - 파이썬(python) 럭키 스트레이트 난이도 : 下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 256 MB 해답 score = input() half_length = len(score) // 2 front = score[0:half_length] back = score[half_length:] front_sum, back_sum = 0, 0 for i in range(len(front)): front_sum = front_sum + int(front[i]) for i in range(len(back)): back_sum = back_sum + int(back[i]) if front_sum == back_sum: print("LUCKY") else: print("READY") 예시 n = input() lengt..
[그리디 알고리즘] 무지의 먹방 라이브 - 파이썬(python) 무지의 먹방 라이브 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 import heapq def solution(food_times, k): if sum(food_times)
[그리디 알고리즘] 볼링공 고르기 - 파이썬(python) 볼링공 고르기 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n, m = map(int, input().split()) k = list(map(int, input().split())) array = [0] * 11 count = 0 for i in k: array[i] = array[i] + 1 for i in range(1, m+1): n = n - array[i] count = count + (array[i] * n) print(count) 예시 n, m = map(int, input().split()) data = list(map(int, input().split())) # 1부터 10까지의 무게를 담을 수 있는 리스트 array = [0] * 11 for..
[그리디 알고리즘] 만들 수 없는 금액 - 파이썬(python) 만들 수 없는 금액 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) unit = list(map(int, input().split())) unit.sort() result = 1 for i in unit: if result < i: break result = result + i print(result) 예시 n = int(input()) data = list(map(int, input().split())) data.sort() target = 1 for x in data: # 만들 수 없는 금액을 찾았을 때 반복 종료 if target < x: break target += x # 만들 수 없는 금액 출력 print(target) 해설..
[그리디 알고리즘] 문자열 뒤집기 - 파이썬(python) 문자열 뒤집기 난이도 : 下 풀이 시간 : 20분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 s = input() allzero, allone = 0, 0 for i in range(len(s)-1): if s[i] != s[i+1]: if s[i+1] == '1': allzero = allzero + 1 else: allone = allone + 1 print(min(allzero, allone)) 예시 data = input() count0 = 0 # 전부 0으로 바꾸는 경우 count1 = 0 # 전부 1로 바꾸는 경우 # 첫 번째 원소에 대해서 처리 if data[0] == '1': count0 += 1 else: count1 += 1 # 두 번째 원소부터 모든 원소를 확인하며 for ..
[그리디 알고리즘] 곱하기 혹은 더하기 - 파이썬(python) 곱하기 혹은 더하기 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 s = input() result = int(s[0]) for i in range(1, len(s)): if int(s[i])
[그리디 알고리즘] 모험가 길드 - 파이썬(python) 모험가 길드 난이도 : 下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) horror = list(map(int, input().split())) horror.sort() count, result = 0, 0 for i in horror: count = count + 1 if count >= i: result = result + 1 count = 0 print(result) 예시 n = int(input()) data = list(map(int, input().split())) data.sort() result = 0 # 총 그룹의 수 count = 0 # 현재 그룹에 포함된 모험가의 수 for i in data: # 공포도를 낮은 것부터 하나씩..
[그래프 이론 알고리즘] 커리큘럼 - 파이썬(python) 커리큘럼 난이도 : 上 풀이 시간 : 50분 시간 제한 : 2초 메모리 제한 : 128 MB 해답 from collections import deque import copy v = int(input()) indegree = [0] * (v+1) graph = [[] for i in range(v+1)] time = [0] * (v+1) for i in range(1, v+1): data = list(map(int, input().split())) time[i] = data[0] for x in data[1:-1]: indegree[i] = indegree[i] + 1 graph[x].append(i) def topology_sort(): result = copy.deepcopy(time) q = dequ..
[그래프 이론 알고리즘] 도시 분할 계획 - 파이썬(python) 도시 분할 계획 난이도 : 中 풀이 시간 : 40분 시간 제한 : 2초 메모리 제한 : 256 MB 해답 def find_parent(parent, x): if parent[x] != x: parent[x] = find_parent(parent, parent[x]) return parent[x] def union_parent(parent, a, b): a = find_parent(parent, a) b = find_parent(parent, b) if a < b: parent[b] = a else: parent[a] = b n, m = map(int, input().split()) parent = [0] * (n+1) edges = [] result = 0 for i in range(1, n+1): pa..