practivceAlgorithm/swexpertacademy 84

[SWEA][Python] 3143 가장 빠른 문자열 타이핑

문자열 매칭 연습하기위해 kmp사용했고 사실 그냥 패턴을 기준으로 split하거나 replace로 변경시켜주면 더 쉽다. import sys sys.stdin = open('input.txt') def make_failure_function(p): failure_function = [0] * (len(pa)) counter = 0 for idx in range(1, len(p)): while counter > 0 and p[counter] != p[idx]: counter = failure_function[counter-1] if p[counter] == p[idx]: counter += 1 failure_function[idx] = counter return failure_function def kmp..

[SWEA][Python] 6485 삼성시의 버스노선

겹치는 구간이 몇개냐 세주면 된다. def count_bus(n): bus_stops = [0 for _ in range(5000)] for _ in range(n): start, end = map(int,input().split()) for i in range(start-1,end): bus_stops[i] += 1 P = int(input()) qa_set = [] for i in range(P): qa_set.append(bus_stops[int(input())-1]) return qa_set for test in range(1, int(input())+1): N = int(input()) answer = count_bus(N) print(f'#{test}', end=' ') print(*answer)

[SWEA][Python] 4408 자기방으로 돌아가기

예전 강의실 배정문제처럼 풀었다. round가 반올림이 아니라 사사오입이라는걸 깨달은 아주 소중한문제.. 내 한시간.. from heapq import heappop,heappush from math import ceil def find_time_units(n): students = [] for _ in range(n): start, end = map(int,input().split()) if start > end: start, end = end, start start = ceil(start/2) end = ceil(end/2) students.append([start,end]) students.sort() time_units = [] heappush(time_units,students[0][1]) fo..

[SWEA][Python] 1961 숫자배열회전

배열회전 너무 잘써먹는듯.. 대신 사고가 좀 갇히는것 같기도 하다. 다른 방법도 많은데 import sys input = sys.stdin.readline def rotate_clock(n, matrix): rot90 = [k[::-1] for k in zip(*matrix)] rot180 = [k[::-1] for k in zip(*rot90)] rot270 = [k[::-1] for k in zip(*rot180)] merge_matrix = [[] for _ in range(n)] for matrix in rot90,rot180,rot270: for i in range(n): merge_matrix[i].append(''.join(map(str,matrix[i]))) return merge_matr..