practivceAlgorithm/백준 379

[백준][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(..

[백준][Python] 1305 광고

KMP에서 실패함수를 만드는 느낌. 중복 매칭 알고리즘을 짠다. import sys input = sys.stdin.readline L = int(input()) # 광고판 길이 string = input().rstrip() # 광고판 문자열 string_length = len(string) # 실패함수 ( KMP 패턴 부분 일치 테이블 만들기) pattern_table = [0 for _ in range(string_length)] count = 0 for idx in range(1, string_length): while count > 0 and string[idx]!=string[count]: count = pattern_table[count-1] if string[idx]==string[count..

[백준][Python] 16988 바둑2

문제 이름만 봐도 바킹독님이 만드신 문제.. 구현문제로 자주나오는 유형. 삼성 기출의 연구소 같은 느낌으로 막아놓을 벽을 몇개 정하고 BFS로 막힌 영역을 세는 느낌. 연구소 시리즈를 풀며 연습할 필요성을 느꼈다. 벽을 고르는 조합도 comb를 쓰지않고 함수를 구현하는 방법도 고려할 수 있다. import sys input = sys.stdin.readline from collections import deque from itertools import combinations def BFS(x,y,visited): queue = deque() visited[x][y] = True queue.append([x,y]) kill_ai_stone = 1 flag = 0 while queue: x,y = queue..