728x90

Total

728x90

    올바른 괄호 (스택)

    괄호변환 (문자열, 구현) 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

    완주하지 못한 선수 (해시, 딕셔너리)

    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

    프로세스 (큐)

    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)

    프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. 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)

    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..

    순위 (플로이드 워셜)

    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..

    기능 개발 (큐)

    def solution(progresses, speeds): answer = [] cnt = 0 day = 0 while len(progresses)>0: if progresses[0] + day*speeds[0] >= 100: # 완료 progresses.pop(0) speeds.pop(0) cnt+=1 else: # 미완 if cnt>0: # 지금까지 완료한 기능 배포하고 초기화 answer.append(cnt) cnt=0 day+=1 answer.append(cnt) return answer

    더 맵게 (힙)

    from heapq import heapify, heappush, heappop def solution(scoville, K): cnt=0 heapify(scoville) while True: now=heappop(scoville) if now>=K: break if len(scoville)

    주식 가격 (큐/스택)

    스택 """ 1. answer의 값을 주식의 가격이 떨어지지 않았을 경우로 초기화한다. 2. rices를 순회하며 stack의 top의 인덱스보다 현재 price의 값이 작을 경우, pop후, answer값을 수정하는 것을 반복한다. """ def solution(prices): n = len(prices) answer = [i for i in range(n-1,-1,-1)] # 주식 가격이 떨어질 경우 찾기 stack = [0] for i in range(1, n): while stack and prices[stack[-1]] > prices[i]: # 스택 맨 위 j = stack.pop() answer[j]=i-j stack.append(i) return answer print(solution([1..

    선입 선출 스케줄링 (이분 탐색)

    def solution(n,cores): answer=0 if n = n: r=mid else: l=mid+1 #찾아낸 (r-1) 까지의 총 작업수를 n에서 뺌 n -= sum(map(lambda x: (r-1)//x, cores)) # 남아있는 작업 수는 전부 현재 시간(r) 안에서 이루어짐 for i in range(len(cores)): # r이 i의 약수 일 때 n-=1 if r%cores[i]==0: n-=1 if n==0: answer=i+1 return answer