[Coding Test]/[백준]
[백준] 15686 파이썬(python) : 치킨 배달
15686번 : 치킨 배달 전체 치킨집에서 폐점시키지 않고 남겨둘 m개의 치킨집을 뽑는다.(이때 순서는 상관없으므로 순열이 아닌 조합이 된다.) 각 집을 기준으로 거리가 가장 가까운 치킨집을 구한다.(치킨거리) 그리고 치킨거리를 모두 더하면 도시의 치킨거리가 된다. 도시의 치킨거리 중 가장 작은 값을 출력! 조합을 이용한 풀이) import sys from itertools import combinations n, m = map(int, sys.stdin.readline().split()) graph = [ list(map(int, sys.stdin.readline().split())) for _ in range(n) ] res = sys.maxsize house, chicken = [], [] for ..
[백준] 10819 파이썬(python) : 차이를 최대로
10819번 : 차이를 최대로 백트래킹을 이용한 풀이) import sys n = int(sys.stdin.readline()) number = list(map(int, sys.stdin.readline().split())) temp, res = [], [] #1 def backTracking(depth): if depth == n: #2 t = 0 for i in range(n-1): #3 t += abs(number[temp[i+1]] - number[temp[i]]) res.append(t) return for i in range(n): if i not in temp: #4 temp.append(i) backTracking(depth+1) #5 temp.pop() backTracking(0) pri..
[백준] 2251 파이썬(python) : 물통 - (★)
2251번 : 물통 문제를 읽는 순간 1697번 : 숨바꼭질 같은 문제라고 생각했다. bfs를 이용한 정형화되어있지 않은 유형이라 생각했는데 부피가 A인 물통이 비어있을 때 C물통의 용량을 구하는 방법은 q.popleft()로 꺼내줄때 조건문을 사용하면 되지만,다른 물통으로 물을 옮기는것을 구현하는 방법과 방문처리를 구현하는 방법이 떠오르지 않았다. 완전탐색으로 A에서 B, C로 옮길때 B에서 A, C로 옮길때 C에서 A, B로 옮길때 6가지 경우를 모두 따져야하며 물을 따를때마다 A물통의 양이 0인 경우를 찾아야 한다. 문제의 조건에서 C물통은 처음 시작할때 가득 채워져 있고 나머지 두 물통은 비워져 있닥고 했으므로 물의 총량은 고정이다. 그래서 C물통의 남아있는 양인 z를 구하는 공식은 z = C-x..
[백준] 7785 파이썬(python) : 회사에 있는 사람
7785번 : 회사에 있는 사람 import sys n = int(sys.stdin.readline()) hash = {} for _ in range(n): name = sys.stdin.readline().split() if name[1] == 'enter': hash[name[0]] = True elif name[1] == 'leave': hash[name[0]] = False res = [] for key, value in hash.items(): if value == True: res.append(key) res.sort(reverse=True) for i in res: print(i)
[백준] 5586 파이썬(python) : JOI와 IOI
5586번 : JOI와 IOI import sys string = sys.stdin.readline().rstrip() joi, ioi = 0, 0 for i in range(len(string)-2): if string[i:i+3] == 'IOI': ioi += 1 if string[i:i+3] == 'JOI': joi += 1 print(joi) print(ioi)
[백준] 1652 파이썬(python) : 누울 자리를 찾아라 - (★)
1652번 : 누울 자리를 찾아라 import sys n = int(sys.stdin.readline()) graph = [ sys.stdin.readline().rstrip() for _ in range(n) ] row_cnt, col_cnt = 0, 0 for i in range(n): for j in graph[i].split('X'): if len(j) >= 2: row_cnt += 1 for i in range(n): col = 0 for j in range(n): if graph[j][i] == '.': col += 1 else: col = 0 if col == 2: #1 col_cnt += 1 print(row_cnt, col_cnt) #1 : col이 2라면 col_cnt +1 1541번 ..