root 111

백준 파이썬 1874번 : 스택 수열

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

[알고리즘] 시간복잡도, 공간복잡도, 점근표기식

1. 시간복잡도 더보기 시간 복잡도는 입력값에 따라 문제를 해결하는데 걸리는 시간과의 상관관계를 말합니다. 똑같은 알고리즘에 입력값이 몇 배로 늘어남에 따라 문제를 해결하는 데 걸리는 시간은 몇 배만큼 늘어나는지 보는 것이다. 우리는 똑같은 입력값이라도 당연히 더 빠른 시간 안에 입력을 처리하는 알고리즘을 선호한다. 즉 걸리는 시간이 줄어들수록 시간 복잡도는 작아지며, 시간 복잡도가 작은 알고리즘이 좋은 알고리즘이다. 시간 복잡도에 대해서 설명하기 위해 똑같은 목적을 가진 두 개의 알고리즘을 살펴보겠다. 두 개의 알고리즘의 목표는 배열 안에 숫자 중 가장 큰 최댓값을 찾는 로직이다. array = [1,3,6,5,4,2] def findMaxValue(array): max_num = array[0] fo..

이론/알고리즘 2021.08.15

React Debounce, Throttle 실습으로 배워보기

const onChangeEvent = (e) => { setInputValue(e.target.value); } return( ) input onChange이벤트는 input의 current.value가 달라질 때마다 일어나는 이벤트이다. 우리는 위의 코드를 이용해서 input에 들어있는 value를 state에 저장할 수 있다. 네이버의 검색엔진 또한 onChange 이벤트를 이용해 검색바 밑에 연관검색어를 추천해준다. 그런데 value가 달라질 때마다 onChange 이벤트를 발생하게 되면 자원낭비와 부자연스러운 연출이 일어난다. 우리는 위에 사진처럼 감사합니다 를 입력했을 때 정확히는 감사합니다의 연관검색어를 원하는데 value값이 달라질때마다 이벤트를 일어나게 한다면 ㄱ -> 가 -> 감 -> ..

코딩/react 2021.08.12

알고보면 알기쉬운 알고리즘 - 4주차 개발일지(트리, 힙, 그래프, DFS&BFS, DP)

GD프로젝트 알고리즘 수업 4주 차가 시작되었다. 그럼 4주 차에 배운 내용과 풀었던 알고리즘 문제에 대해 설명하겠다. 목차 1. 새롭게 배운 내용(트리, 힙, 그래프, DFS, BFS, Dynamic Programming) 2. CGV 극장 좌석 자리 구하기 문제 1. 새롭게 배운 내용 1 - 0 선형, 비선형 더보기 선형 자료구조의 대표적인 예시인 스택과 큐이다. 선형구조는 처음과 끝이 확연히 정해져 있다. 그래서 자료를 저장하고 꺼내고 탐색하는 것에 초점이 맞추어져 있다. 즉 내가 사용해야할 자료구조가 조회, 삽입, 삭제가 얼마나 빈번하냐에 따라 선택해야 한다. 비선형 자료구조의 대표적인 예시인 트리와 그래프이다. 비선형 구조는 처음과 끝이 정해져 있지 않으며 때로는 순환적이기도 하다. 비선형 자료..

immer, redux-action 쓰는 방법

React-Redux를 더욱 쉽게 관리하게 만들어주는 immer, redux-action에 대해 배워보자 모듈 설치 방법 yarn add redux react-redux redux-thunk redux-logger history@4.10.1 connected-react-router@6.8.0 immer redux-actions npm i redux react-redux redux-thunk redux-logger history@4.10.1 connected-react-router@6.8.0 immer redux-actions 각 모듈에 대한 설명 redux-logger : 웹상에서 redux의 action이 일어날 때마다 콘솔에서 action 내역을 이쁘게 보여주는 모듈 이런 식으로 action이 일어날..

코딩/react 2021.08.10

알고보면 알기쉬운 알고리즘 - 3주차 개발일지(정렬, 스택, 큐, 해쉬)

GD프로젝트 알고리즘 수업 3주 차가 시작되었다. 그럼 3주 차에 배운 내용과 풀었던 알고리즘 문제에 대해 설명하겠다. 목차 1. 새롭게 배운 내용(버블정렬, 선택정렬, 삽입정렬, 병합정렬, 스택, 큐, 해쉬) 2. 스택 문제 1. 새롭게 배운 내용 1. 정렬 더보기 정렬이란 데이터를 순서대로 나열하는 방법을 말한다. 정렬은 알고리즘의 굉장히 중요한 주제이다. 이진 탐색을 가능하게 해주고 데이터를 조금 더 효율적으로 탐색할 수 있게 만들기 때문이다. 그럼 한 번 여러분들이 다음의 데이터를 정렬해보자 3,1,2 파슬리, 누룽지, 감자 d, s, o 인간의 눈으로는 작은 수들의 데이터를 정렬하는 것은 무지 쉽다. 3,1,2 -> 1,2,3 파슬리, 누룽지, 감자 -> 감자, 누룽지, 파슬리 d, s, o -..

자바스크립트 비동기 처리 Promise

Promise는 콜백함수 대신에 비동기적인 처리를 할 수 있는 것이다. 비동기가 무엇인지 모른다면 다음 글을 보자 자바스크립트 비동기 [클릭] Promise의 중요한 요소는 State와 Producer, Consumer가 있다. state는 자신의 일이 다 처리되었는지 아닌지의 현재 상태를 나타내 주는 것이고 Producer는 데이터를 제공하는 사람이며 Consumer는 데이터를 소비하는 사람을 일컫는데 개념만 보면 뭔 소리하는지 못 알아듣겠으니 코드를 보자 //1. Producer const promise = new Promise((resolve, reject) => { //여러가지 로직(네트워크 통신 및 파일 처리 등등) console.log('doing something...'); setTimeou..

알고보면 알기쉬운 알고리즘 - 2주차 개발일지(Array, LinkedList, 이진 탐색, 재귀 함수)

GD프로젝트 알고리즘 수업 2주 차가 시작되었다. 그럼 2주 차에 배운 내용과 풀었던 알고리즘 문제에 대해 설명하겠다. 목차 1. 새롭게 배운 내용(Array, LinkedList, 이진 탐색, 재귀 함수) 2. 재귀 함수 문제 1. 새롭게 배운 내용 1. Array vs LinkedList 더보기 자료구조 중에서 자주 쓰이는 Array와 LInkedList를 서로 비교하겠다. 언어는 Python 기준으로 하겠다. (선언할 때 배열 크기를 정해야 하는 c++, 자바의 정적 배열과는 달리 Python의 배열은 동적 배열이다.) 다음 간단한 배열의 예를 들어보자 배열은 index와 데이터로 이루어져있다. index는 0으로부터 시작되며 데이터의 순서를 매기며 데이터는 int형부터 시작되어 그 어떤 데이터 타..