본문 바로가기

전체 글

(84)
자바스크립트의 비동기 처리 (async - await , promise , then ) - 1 비동기 관련한 글을 쓰겠다고 생각한지 정말 오래되었는데 이제야 쓰게 되었다. 부지런히 글을 쓰겠다고 계속 다짐하지만 실천이 참 힘들다.. 비동기 주제를 한 번에 다 정리할 순 없으니 계속 조금씩 추가 및 수정하도록 하겠다. 개발을 하다보면 데이터베이스를 다루게 되는데, 그때 필연적으로 비동기 처리와 만나게 된다. 이전 Node.js - MySQL 글에서 말했듯이, 보통 커넥션 풀 (pool)에서 커넥션을 가져와 처리 후에 반납하는 형태가 된다. 이 과정이 비동기이므로 callback(콜백)함수, async-await, promise, then 등을 활용하여야 한다. 그리고 동시에 let a=3, console.log('abc')이러한 명령들은 '동기 처리'라는 걸 알 수 있다. 일단 promise는 약속..
LeetCode 532 K-diff Pairs in an Array https://leetcode.com/problems/k-diff-pairs-in-an-array/ K-diff Pairs in an Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 일단은 정렬, 이분탐색을 활용하는 문제이다. 여기에 조금 더 생각을 붙여야 한다. unique한 페어를 리턴해야하기 때문이다. 이분탐색을 하고자 한다면, 이분탐색을 행하는 배열 등이 정렬되어 있어야 한다. 그래서 이분탐색과 정렬은 붙어다닐 수 밖에 없다. 두 수의 차가 ..
백준 4256 트리 https://www.acmicpc.net/problem/4256 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 글을 2~3일에 하나씩 올리고 싶은데, 그것도 보통 힘든게 아닌 것 같다. 사실 다른 내용도 많이 담아야 하는데, 그동안 미뤄둔 백준 문제가 너무나 많기에 계속 이렇게 조금씩 올리고 있다. 트리를 다루면 전위 순회, 중위 순회, 후위 순회에 대한 것을 금방 맞닥뜨리게 된다. 너무나도 전형적인 문제이기 때문이다. 이 문제가 바로 그것이다. 재귀함수에 대한 이해를 하기도 좋고, 트리구조에 ..
코드와 선형 구조에 대한 생각 코드를 보면 줄바꿈과 인덴트가 있다. 줄바꿈은 무엇일까? 명령과 명령 간의 분리를 뜻하기도 하고, 줄 번호에 따라서 실행 순서를 뜻하기도 한다. (비동기 처리는 일단은 논외로 한다.) 아마도 마지막에 line break가 있는지를 보고 줄바꿈을 파악할 것이다. 하지만 이렇게만 쓴다면 '갈래' 또는 '영역'을 표현할 수 없다. 순차적으로 실행되는 명령 리스트만 적을 수 있을 것이다. 왼쪽의 그림을 보자. 저런 식으로 조건에 따른 갈래가 생긴다면 코드상에서 v>1? v=5 v=0 이런식으로 쓸 수 없다. 이제 이를 표현하기 위해 뭔가 새로운 표현법이 필요해진 것이다. 하지만 코드를 쓰는 공간에서는 그림을 그리는 것이 아니고 텍스트기에 뭔가 아이디어가 필요하다. 그것을 해결해주는 것이 바로 인덴트인 것이다. ..
LeetCode 756 Pyramid Transition Matrix - with Trie (트라이) https://leetcode.com/problems/pyramid-transition-matrix/ Pyramid Transition Matrix - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 필자는 재귀 안에 또 다른 재귀가 돌아가야하는 구조로 생각하였다. 근데 그렇게 하여도 시간초과가 나서 트라이 구조까지 끼얹었다. 가장 바닥에 있는 문자열(문제에서는 bottom으로 표현)이 주어졌을 때, 일단 다음 bottom을 만들어야 한다. 필자는 풀이에서 bot..