공부하고 기록하는, 경제학과 출신 개발자의 노트

분류 전체보기 549

[Python] 프로그래머스. 짝지어 제거하기 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들 programmers.co.kr 문자열 파싱으로 작업하면, 1,000,000이라는 문자열 길이 때문..

[Python] 프로그래머스. 가장 먼 노드 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 | 프로그래머스 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 주어진 노드를 토대로 n * n Matrix를 생성할 경우 시간초과가 걸리는 문제. BFS 코드의 효율성보다는 주어진 노드 데이터를 적은 연산비용이 들어가도록 하는 게 관건이었던... 시간초과가 뜨던 코드는 아래와 같았다. from collections import deque, defaultdict def bfs(start, maps, visited): queue = deque() queue.append((start..

[Python] 백준 17142. 연구소 3

https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 www.acmicpc.net 삼성 SW역량테스트 기출문제였다고 한다. BFS와 DFS를 모두 사용하는 문제라고 하는데, Python에서는 '경우의 수'를 뽑아내..

[Python] 프로그래머스. 2018 카카오 Recruit - 추석 트래픽

https://programmers.co.kr/learn/courses/30/lessons/17676 코딩테스트 연습 - [1차] 추석 트래픽 | 프로그래머스 입력: [ 2016-09-15 20:59:57.421 0.351s, 2016-09-15 20:59:58.233 1.181s, 2016-09-15 20:59:58.299 0.8s, 2016-09-15 20:59:58.688 1.041s, 2016-09-15 20:59:59.591 1.412s, 2016-09-15 21:00:00.464 1.466s, 2016-09-15 21:00:00.741 1.581s, 2016-09-15 21:00:00.748 2.31 programmers.co.kr datetime 라이브러리를 써본 적은 없어서 찾아보면서 작업..

[Python] 백준 17298. 오큰수

스택을 사용해 풀 수 있는 문제. _ = input() # len(arr) 값과 똑같아서 패스 arr = list(map(int, input().split())) stack = [] # 값이 없으면 -1을 입력해야 하므로, 기본값으로 -1 설정 result = [-1 for _ in range(len(arr))] # arr 맨 앞부터 시작. i는 각 배열의 index for i in range(len(arr)): # 스택 맨 위의 값 (arr[stack[-1]]) 보다 arr[i]의 값이 더 클 경우 = 오큰수의 정의 while len(stack) != 0 and arr[stack[-1]] < arr[i]: # 스택의 값을 빼고, result에 arr[i] 값을 입력한다. result[stack.pop(..

[Python] 프로그래머스. 숫자 게임 (Level 3)

1. A팀의 최댓값이 B팀의 최댓값보다 크다 = B가 무엇을 내놓아도 이길 수 없다. 포기한다. 2. A팀의 최댓값보다 B팀의 최댓값이 크다 = 이길 수 있다. A팀을 최댓값 -> 최솟값 순서로 정렬하고, B의 최댓값을 빠르게 구할 수 있도록 heapq 라이브러리를 사용한다. import heapq def solution(A, B): # A의 최솟값이 B의 최댓값보다 크면, 이길 방법이 없으므로 0 if min(A) > max(B): return 0 # 최댓값 -> 최솟값 순으로 정렬 A.sort(reverse = True) # 맨 앞에 B의 최댓값이 위치하도록 heapq 자료구조를 사용한다. B = [-i for i in B] heapq.heapify(B) count = 0 for a in A: # 이..

[Python] 백준 1766. 문제집

위상 정렬 문제. Python의 heapq 라이브러리를 활용해서 위상정렬을 구현할 수 있다. import heapq n, m = map(int, input().split()) arr = [[] for _ in range(n+1)] precede = [0 for _ in range(n+1)] heap, result = [], [] for _ in range(m): x, y = map(int, input().split()) arr[x].append(y) # 연결된 간선. x번 문제는 y번보다 먼저 풀어야 한다. precede[y] += 1 # 이어진 노드의 진입차수. # (y번 문제는 몇 개의 선행문제와 연결되어 있는지. 진입차수라 보면 된다) for i in range(1, n+1): if precede[..

협력의 진화

중앙 권위체 없이, 상호간에 믿을 수 없는 상황에서도 협력과 호의가 창발하는 원인을 규명한 책 죄수의 딜레마 상황에서 경기자 간 관계가 오래 지속될수록, 상호협력과 호의가 창발할 가능성이 높다. 호혜주의에 기반해 받은 만큼 갚아준다는 팃포탯 전략은 일반적인 인간관계 상황에서 강건하고 효과적이다. “Give and Take”라는 책이 있다. 인간관계에서 먼저 호의를 베풀고, 받은 것보다 더 많이 주는 Giver 유형의 사람이 어떻게, 왜 성공하는지를 다룬 책이다. 행동, 말, 마음가짐 등을 분석하며 Giver 유형의 사람들이 어떤 사람들인지, 결과적으로 어떻게 성공했는지를 귀납적으로 보여주는 내용이다. Give and Take에서 제시하는 Giver는 “협력의 진화”에서 말하는 팃포탯 전략을 사용하는 사람..

세줄요약 독서 2019.09.03

MCN 백만 공유 콘텐츠의 비밀

2016년 기준, MCN 업계의 과거와 현재를 다루는 책 크리에이터와 MCN이 수익을 내는 경로 – 브랜디드 콘텐츠, 커머스 – 를 소개하며, 한국, 중국, 일본 삼국의 크리에이터 시장환경까지도 다룬다. 1인 미디어를 둘러싼 환경에 집중한 책. ‘바이럴 콘텐츠 성공방법’같은 내용을 다루는 책이 아니다. 예전부터 갖고 있던 책이었는데, 다른 책들을 읽다 보니 차일피일 미뤄서 이제야 읽게 됐다. 2016년에 출판되었던 책이었고, 이 책을 읽는 2019년까지 3년의 시간이 흘렀다. 순식간에 유행이 바뀌고 시장선도자가 도태되기도 하는 콘텐츠 시장이다 보니, 출간 당시에는 예측하지 못했던 수많은 사건과 시장변화가 있었다. 예컨대 미국 통신사업자인 버라이즌은 2015년경 “Go90”이라는 이름으로 OTT 시장에 뛰..

세줄요약 독서 2019.08.17

90년생이 온다

기성세대의 입장에서, 현재의 20대인 90년대생을 탐구하고 이해하려 한 책. 90년대생은 일상에서 극도의 간편함을 추구하고, 목적보다 재미를 중시하며, 사회와 기업에 정직과 공정함을 요구한다. 90년대 초반과 후반 태생의 핵심 차이는 ‘모바일 네이티브’인데, 90년대생 전체를 모바일 네이티브로 간주했다는 점에서 아쉬운 책. 94년 출생인 내 입장에서 꽤 흥미롭게 읽을 수 있었다. 기성세대가 90년대생이 태어나 성장하던 사회적 배경에 주목하고, 그 결과 어떤 성향을 가진 존재가 되었는지 이해하려는 시도였기 때문이다. 90년대생은 IMF를 겪은 70년생과 08년 금융위기를 겪은 80년생을 보고 자란 세대이며, 회사에 충성하던 세대가 구조조정의 대상이 되는 모습을 보며 20대에 진입했다. 그렇기에, 회사에 충..

세줄요약 독서 2019.07.26