올바른 괄호 (스택)
·
Coding Test/programmers
괄호변환 (문자열, 구현) karla.tistory.com def solution(s): answer = True c1=c2=0 for x in s: if x=="(": c1+=1 else: c2+=1 if c1-c2
완주하지 못한 선수 (해시, 딕셔너리)
·
Coding Test/programmers
from collections import Counter def solution(participant, completion): dic1=Counter(participant) dic2=Counter(completion) answer=dic1-dic2 return list(answer.keys())[0] from collections import Counter def solution(participant, completion): dic1=Counter(participant) dic2=Counter(completion) for x in dic1: if dic1[x]-dic2[x]!=0: return x
프로세스 (큐)
·
Coding Test/programmers
def solution(priorities, location): q = [(p,i) for i,p in enumerate(priorities)] cnt=0 while True: p= q.pop(0) if any(p[0] < x[0] for x in q): q.append(p) else: cnt+=1 if p[1] == location: return cnt from collections import deque def solution(priorities, location): q=deque() for i in range(len(priorities)): x=priorities[i] q.append((x,i)) cnt=0 while q: p= q.popleft() flag=False for i in q: if p..
멀리 뛰기 (DP)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 [11726번] 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 분석 karla.tistory.com 풀이 def solution(n): d=[0]*(n+2) d[1]=1 d[2]=2 for i in range(3, n+1): d[i]= (d[i-1]+d[i-2])%1234567 return d[n]
네트워크 (BFS)
·
Coding Test/programmers
https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, computers): answer = 0 visited=[False]*n def BFS(v): queue=[] visited[v]=True queue.append(v) while queue: now=queue.pop(0) visited[now]=True for i in range(n): if i!=now and not visited[i] and computers[now..
순위 (플로이드 워셜)
·
Coding Test/programmers
def solution(n, results): answer = 0 board = [[0] * (n + 1) for _ in range(n + 1)] for a, b in results: board[a][b]=1 board[b][a]=-1 for k in range(1, n + 1): for s in range(1, n + 1): for e in range(1, n + 1): if board[s][k] == board[k][e] == 1: board[s][e] = 1 # 이김 board[e][s] = board[k][s] = board[e][k] = -1 # 짐 for row in board: if row[1:].count(0) == 1: # 1 승리 /0 모름 / -1짐 answer += 1 return..