분류 전체보기
[프로그래머스] 🖨 프린터 문제 / python
[프로그래머스] 🖨 프린터 문제 / python
2019.02.18🖨 프린터 문제 풀어보기 😃 나의 코드 def solution(priorities, location): pos = [] for i in range(len(priorities)): if i == location: pos.append(True) else: pos.append(False) answer = 0 count = 0 m = max(priorities) while True: if m > priorities[0]: priorities.append(priorities.pop(0)) pos.append(pos.pop(0)) else: count += 1 priorities.pop(0) if pos.pop(0): return count m = max(priorities) 스택(stack)/큐(queue) 자료..
[프로그래머스] 👨💻 기능 개발 / python
[프로그래머스] 👨💻 기능 개발 / python
2019.02.18👨💻 기능 개발 문제 풀어보기 😃 나의 코드 import math def solution(progresses, speeds): answer = [] progresses = [math.ceil((100-a)/b) for a, b in zip(progresses, speeds)] front = 0 for idx in range(len(progresses)): if progresses[front] < progresses[idx]: answer.append(idx-front) front = idx answer.append(len(progresses)-front) return answer 스택stack/큐queue 자료구조에 속한 문제입니다. 우선 progresses와 speeds로 나누어진 두 list를 하나..
不怕慢, 只怕站
不怕慢, 只怕站
2019.02.18不怕慢, 只怕站늦는 것을 겁내지 말고, 멈추는 것을 겁내라 남들보다 늦었다고 생각하는 것을 두려워 하기보다 자신이 멈추어있고 도전하지 않는 모습을 두려워하고, 불가능해 보이는 일이라도 멈추지 않으면 언젠가 뜻을 이룰 것입니다. 언제나 일을 하다보면 힘든 시기가 오고 일이 뜻대로 풀리지 않을 때가 있습니다.누구보다 어떤 점에서 늦는다는 것이 절대 뒤쳐지는 게 아닙니다. 하지만 포기해버리고 노력과 도전을 하지 않게 되는 순간, 현실에 안주하는 순간, 바로 그 순간 더 큰 실패가 따라오게 됩니다. 무슨 일이든지 포기하지 않고 꾸준히 노력하여 이루고자하는 바를 이루시기 바랍니다.
[프로그래머스] 👷♀️ 타일 장식물 / python
[프로그래머스] 👷♀️ 타일 장식물 / python
2019.02.18👷♀️ 타일 장식물 문제 풀어보기 😃 나의 코드 def solution(N): rad_array = [1,1] for i in range(2,N): rad_array.append(rad_array[-1] + rad_array[-2]) answer = (rad_array[-2] + rad_array[-1]*2)*2 return answer DP(Dynamic Programming, 동적계획법)을 이용해 해결한 문제입니다. DP의 계획에 따라 전체 문제를 작은 부분으로 나누겠습니다. 최종적으로 구할 직사각형의 둘레는 마지막으로 구한 정사각형과 그 전 정사각형의 변의 길이를 통해 구할 수 있기 때문에 변을 구하는 문제로 치환해서 풀겠습니다.가장 작은 정사각형부터 구하면 마지막으로 구한 정사각형의 한 변과 그..
[알고리즘] 🤷♂️ 동적 계획법 / dynamic programming
[알고리즘] 🤷♂️ 동적 계획법 / dynamic programming
2019.02.18👉 동적계획법 DP(동적 계획법)이 뭔가요? DP는 알고리즘 문제로 자주 나오는 디자인 패러다임 중 하나입니다. Dynamic Programming이라는 말은 고안자인 벨만이 dynamic이라는 단어가 멋있어서(…) 선택한 단어라고 합니다. 따라서 이 방법은 전산학 전반에서의 동적(dynamic) 혹은 프로그래밍(programming)이라는 단어와는 관련이 없습니다. DP의 한글 번역도 동적 프로그래밍보다는 동적 계획법으로 번역됩니다. 👉 특징 부분 문제(overlapping subproblems) 동적 계획법의 접근 방식은 분할 정복과 같습니다. 주어진 문제를 더 작은 문제로 나눈 뒤 이 문제의 답을 계산하고, 이 답을 토대로 원래 문제의 답을 도출해가기 때문입니다. 하지만 분할 정복과 문제를 나누는 ..
[프로그래머스] 👨🏫 정수 삼각형 / python
[프로그래머스] 👨🏫 정수 삼각형 / python
2019.02.18👨🏫 정수 삼각형 문제 풀어보기 😃 나의 코드 def solution(tri): m_lst = [] for row in tri: lst = [] if len(m_lst) == 0: lst.append(row[0]); else: for idx, num in enumerate(row): if idx == 0: lst.append(m_lst[-1][idx] + num) elif idx == len(row)-1: lst.append(m_lst[-1][-1] + num) else: lst.append(max(m_lst[-1][idx-1],m_lst[-1][idx]) + num) m_lst.append(lst) return max(m_lst[-1]) DP(Dynamic Programming, 동적계획법)을 이용해..
[네트워크] 🤷♂️ HTTPS가 뭐길래?
[네트워크] 🤷♂️ HTTPS가 뭐길래?
2019.02.16저번에 DNS(Domain Name Server)에 대해 알아보았는데요, 이번에는 이번에 차단 규제로 논란 중인 HTTPS와 그 이전에 나온 HTTP 대해 알아보겠습니다. HTTP and HTTPS HTTP(HyperText Transfer Protocol, 초본문전송규약, 하이퍼본문 전송규약) WWW(World Wide Web) 상에서 정보를 주고 받을 수 있는 프로토콜(protocol)입니다. 주로 HTML 문서를 주고받는 데에 쓰이며, TCP(Transmission Control Protocol, 전송조종규약)와 UDP(User Datagram Protocol)을 사용하며, 80번 포트를 사용합니다. 1996년 1.0 버전, 1999년 1.1 버전이 발표되었습니다. 암호화되지 않은 방법으로 데이터를..
[프로그래머스] ⚾ 숫자 야구 / python
[프로그래머스] ⚾ 숫자 야구 / python
2019.02.15⚾ 숫자 야구 문제 풀어보기 😃 나의 코드 from itertools import permutations def check_score(question, candidate, s, b): strike = 0 for i in range(len(question)): if question[i] == candidate[i]: strike += 1 if s != strike: return False ball = len(set(question) & set(candidate))-strike if b != ball: return False return True def solution(baseball): lst = list(permutations([1,2,3,4,5,6,7,8,9], 3)) for i in baseball:..
[프로그래머스] 🕵️♀️ 소수 찾기 / python
[프로그래머스] 🕵️♀️ 소수 찾기 / python
2019.02.15🕵️♀️ 소수 찾기 문제 풀어보기 😃 나의 코드 from itertools import permutations def solution(numbers): answer = set() maximum = 10000000 prime_lst = [False, False] + [True] * maximum for idx, num in enumerate(prime_lst): if num: k = idx*2 while k
[프로그래머스] 🎨 카펫 문제 / python
[프로그래머스] 🎨 카펫 문제 / python
2019.02.15--- --- 🎨 카펫 문제 풀어보기 😃 나의 코드 def solution(brown, red): for a in range(1, int(red**0.5)+1): if not red % a: b = red // a if 2*a + 2*b + 4 == brown: return [b+2, a+2] 완전 탐색(exhaustive search)를 이용하여 푸는 문제입니다. 빨간색의 가로를 A, 세로를 B라고 했을 때, 주어진 값 red는 A*B가 되고 brown은 2(A+B)+4가 됩니다. 이제 A와 B에 찾는 과정입니다. red를 두 자연수 곱의 쌍으로 봤을 때, 중복된 곱의 쌍을 없엔다면 A의 범위는 red의 제곱근의 내림값보다 작거나 같을 것입니다. 이를 통해 얻은 자연수 A와 B의 쌍이 brown에 값에..
[프로그래머스] 👩🏫 모의고사 / python
[프로그래머스] 👩🏫 모의고사 / python
2019.02.15👩🏫 모의고사 문제 풀어보기 😃 나의 코드 def solution(answers): peoplePatternArray = [[1,2,3,4,5], [2,1,2,3,2,4,2,5], [3,3,1,1,2,2,4,4,5,5]] scoreArray = [0,0,0] result = [] for idx, answer in enumerate(answers): for i in range(0,len(peoplePatternArray)): if answer == peoplePatternArray[i][idx%len(peoplePatternArray[i])]: scoreArray[i] += 1 for idx, s in enumerate(scoreArray): if s == max(scoreArray): result.ap..
[알고리즘] 🤷♂️ 완전 탐색 알고리즘 / exhaustive search algorithm
[알고리즘] 🤷♂️ 완전 탐색 알고리즘 / exhaustive search algorithm
2019.02.15출제 빈도 높음 평균 점수 낮음 🤷♂️ 완전 탐색 알고리즘(exhaustive search algorithm)?PS(Problem Solving)을 하는 데 가장 간단하고 쉬운 방법이 무엇일까요? 답은 가능한 경우를 다 해보는 것입니다. 이게 무슨 알고리즘이야? 할 수 있겠지만, 이것도 알고리즘에 일종입니다. 전산학에서는 이를 무식하게 푼다라는 뜻의 Brute-force라 하고, 전체를 확인한다고 해서 완전 탐색 알고리즘(exhaustive search algorithm)이라고 합니다. 👉 어디에 쓰이는가?하지만 대부분의 문제들은 시간 초과등의 이유로 완전 탐색으로 풀리지 않습니다. 하지만 어려운 알고리즘을 생각할 필요 없이 완전 탐색으로 풀리는 문제도 있으며, 가끔 어려운 완전 탐색 문제도 존재합니다..