본문 바로가기

Python/Algorithm

(5)
Baekjoon_1010_bridge python 풀이 import sys input = sys.stdin.readline T = int(input()) result = [[0] * 31 for _ in range(31)] for j in range(1,31) : for k in range(j,31) : if j == k : result[j][k] = 1 elif j == 1 : result[j][k] = k else: answer = 0 for l in range(j-1,k): answer += result[j-1][l] result[j][k] = answer for i in range(T) : bridge = list(map(int,input().split())) west = bridge[0] east = bridge[1] print(result[west..
1240 distance BFS import sys from collections import defaultdict,deque input = sys.stdin.readline def BFS(graph, x, y):# 출발 노드 : x, 도착노드 : y visited = [False] * (N+1) # 맨앞에 0번쨰 자리는 제외하므로 n+1을 해줘야 원래수대로 쓸수있다. que = deque() que.append(x) visited[x] = True # 방문했다는 표시 target_dist = [0]*(N+1) # index : nord, value : index 노드까지의 거리 while que : # 출발노드부터 시작해서 방문 노드 que에넣기 v = que.popleft() # 현재 노드 빼서 v에넣기 if v == y: # 목표..
프로그래머스 - 문자열 압축 ``` def solution(s): result = [] # 길이가 1일때 if len(s) == 1 : return 1 # 반복이 가장클때도 절반은 넘지 못하므로 for i in range(1, (len(s)//2) + 1): b = '' cnt = 1 # 반복 횟수 tmp = s[:i] # 자른 길이 # i 부터 i간격으로 s길이 만큼 반복 for j in range(i, len(s), i): # 반복 되었을 떄 cnt += 1 if tmp == s[j:i+j]: cnt+=1 else : # 반복 되지않을때 if cnt != 1 : # 반복될때 만약에 2가아닌 3이어도 다시 재입력 b = b + str(cnt) + tmp else : # 반복 안될때. b = b + tmp tmp = ..
[Python] 정규 표현식 기본 규칙 \d -> 숫자 character와 일치 [0-9] . -> 점은 어떠한 문자와 일치한다. [abcd] : a or b or c or d [a-d] : -와 함께 사용되면 해당 문자 사이의 범위에 속하는 문자 중 하나 [0-9] : 모든 숫자 [a-z] : 모든 소문자 [A-Z] : 모든 대문자 [a-zA-Z0-9] : 모든 알파벳 문자 및 숫자 [^0-9] : ^가 맨 앞에 사용되는 경우 해당 문자 패턴이 아닌 것과 매칭 m = re.search(r'\d\d\d\w', '112abcef119') 일때 m 은 112a m = re.search(r '[cbm]at', 'mat') : mat출력 re. search(r'[0-9]haha', '7hahah') : 7haha출력 re.search(r'..
리스트 빼기 리스트 import collections answer = collections.Counter(big) - collections.Counter(small) 이런 방식으로 리스트 빼기를 할수 있다. 1가지종류가있다면 한가지가 적어지는거라서 중복이 허용된다. 이말이 뭐냐면 big = [a,a,b,c] small = [a,b,c] 라면 저위 식대로 하면 answer.keys())[0] 가 'a' 가 된다. 만약 중복이고 뭐고 small의 요소를 다삭제하려면 answer = list(set(big)-set(small)) 이렇게 간단히 표현할 수 있다.