비밀지도 (리스트 zip(), 문자열 rjust() 메서드)
·
Coding Test/programmers
def solution(n, arr1, arr2): answer = [] for i, j in zip(arr1, arr2): answer.append(str(bin(i|j)[2:]).rjust(n, '0').replace('1', '#').replace('0', ' ')) return answer def solution(n, arr1, arr2): answer = [] a1 = [] a2 = [] for i in range(n): t1=bin(arr1[i])[2:] t1='0'*(n-len(t1))+t1 a1.append(t1) t2=bin(arr2[i])[2:] t2='0'*(n-len(t2))+t2 a2.append(t2) for i in range(n): temp=['#']*n for j in ra..
캐시 (구현)
·
Coding Test/programmers
def solution(cacheSize, cities): answer=0 q=[] if cacheSize==0: return len(cities)*5 for x in cities: x = x.upper() if x in q: answer+=1 q.remove(x) q.append(x) else: answer+=5 if len(q)>cacheSize-1: q=q[1:] q.append(x) return answer
문자열 압축 (구현)
·
Coding Test/programmers
def solution(s): answer=len(s) for i in range(1, len(s)//2+1): res="" prev=s[0:i] # 앞에서부터 i 문자열 추출 cnt=1 for j in range(i, len(s), i): # i만큼 증가시키며 이전 문자열과 비교 if prev==s[j:j+i]: cnt+=1 # 이전 상태와 동일하면 증가 else: # 다른 문자열이 나왔다면, 압축 불가 res += str(cnt)+prev if cnt>=2 else prev # 초기화 prev=s[j:j+i] cnt=1 # 남아있는 문자열 res+=str(cnt)+prev if cnt>=2 else prev answer=min(answer, len(res)) return answer
합승 택시 요금 (플로이드 워셜)
·
Coding Test/programmers
플로이드 워셜 알고리즘 분석 [11403] 경로 찾기 (플로이드-워셜) 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시 karla.tistory.com def solution(n, s, a, b, fares): INF = 10000000 answer = INF graph = [[INF for j in range(n)] for i in range(n)] for f in fares: i, j, k = f graph[i-1][j-1]=k graph[j-1][i-1]=k print(graph) for k in range(n): for i in range(n): for j in range(n)..
합승 택시 요금 (다익스트라)
·
Coding Test/programmers
[1753번] 최단경로 구하기 (다익스트라, 우선순위큐, 힙) 다익스트라 음수간선 X S 시작점부터 다른 모든 노드로 가는 최단거리 구하는 알고리즘 기출 : 음수간선이 없는데 시작점이 있고 최단거리 구하는 문제 원리 최단거리를 구할 노드에서 시작하여 karla.tistory.com from heapq import heappush, heappop def solution(n, s, a, b, fares): INF = int(1e9) answer = INF graph = [[] for _ in range(n + 1)] for f in fares: i, j, k = f graph[i].append((j, k)) graph[j].append((i, k)) def dijk(start): # s를 시작점으로하는 다익..
메뉴 리뉴얼 (조합)
·
Coding Test/programmers
from itertools import combinations from collections import Counter def solution(orders, course): answer = [] for c in course: temp = [] for order in orders: combi = combinations(sorted(order), c) temp += combi cnt = Counter(temp) if len(cnt) > 1: m = max(cnt.values()) for i in cnt: if cnt[i] >= 2 and cnt[i] == m: answer.append("".join(i)) answer.sort() return answer print(solution(["ABCFG", "AC"..