practivceAlgorithm 570

[문자열 뒤집기] 문자열 슬라이싱

인덱스를 지정하면 해당 위치의 배열 포인터를 얻게된다. 이를 통해 연결된 객체를 찾아 실제 값을 찾아낸다. 슬라이싱 0.499 마이크로초 1 리스트 reverse() 2.46 마이크로초 5 revsered() + join() 2.49 마이크로초 6 for 반복 5.5 마이크로초 12 while 반복 9.4 마이크로초 21 재귀 24.3 마이크로초 54 s[:]는 사본을 리턴한다. 이 방식은 문자열이나 리스트를 복사하는 파이썬다운 방식(Pythonic way) 이다. 앞으로 문자열 비교는 slicing을 이용하자.

[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..

[백준][Python] 13707 합분해 2

중복순열 문제이며 N개를 K칸에 분배하는 문제이다. K칸에서 N-1개를 분배하는 경우에서 1개를 더 분배하는 모든 경우의 수(0인칸이 남는 경우의수가 배제됨) N개를 K-1칸에 분배 하는 경우의 수에 0인칸을 하나씩 붙혀주는 경우의 수(위에서 배제된 경우의 수가 충족됨) 의 합을 구하는 문제. import sys input = sys.stdin.readline N, K = map(int, input().split()) dp = [[0]*5001 for _ in range(5001)] # 결국 숫자1 N개를 K개의 칸에 분배하는 경우의 수. # N-1개를 K개에 분배하는 경우의수에 1씩 더하는 경우 + N개를 K-1개에 분배하는 경우의수에서 0을 가지는 한칸을 더하는경우, for i in range(1,N..

[백준][Python] 20207 달력

늘 숫자가 있고 없고의 경계를 기준으로 값을 구할때 365일째에서 0으로 넘어가는 구간이 없기 때문에 계산이 끝나지 않을 경우가 많은데 이런경우 늘 조심.. 마지막에 한번 정산 해주거나 배열 뒤에 0값을 하나 넣어서 마무리 시켜줘야함.. import sys input = sys.stdin.readline N = int(input()) sch = [0]*(366) for _ in range(N): a, b = map(int, input().split()) for i in range(a,b+1): sch[i] += 1 area = 0 max_h = 0 for i in range(1,366): if not sch[i-1] and sch[i]: left = i if max_h < sch[i]: max_h = s..

[백준][Python] 16139 컴퓨터 인간 상호작용

둘다 같은코든데 아래꺼만 100점. 차이점은 가로로 저장하느냐 세로로 저장하느냐 차이. 가로가 더 빠른가보다. import sys input = sys.stdin.readline print = sys.stdout.write s = input().rstrip() n = len(s) sub_set = [[0 for _ in range(26)] for _ in range(n)] for i in range(n): for j in range(i,n): sub_set[j][ord(s[i])-97] += 1 q = int(input()) for _ in range(q): alp, l, r = input().split() l,r = int(l), int(r) l_value = sub_set[l-1][ord(alp)-9..

[백준][Python] 14676 영우는 사기꾼

위상정렬 + 구현 level있는 빌딩을 지을수는 없지만 building이 있는데 레벨이 있을 수도 있음(하위건물이 파괴되어) import sys input = sys.stdin.readline N, M, K = map(int,input().split()) graph = {i: [] for i in range(1,N+1)} level = {i: 0 for i in range(1,N+1)} built = {i:0 for i in range(1,N+1)} for _ in range(M): a, b = map(int, input().split()) graph[a] += [b] level[b] += 1 for _ in range(K): command, building = map(int, input().split(..