전체 글 32

기술할짝 시리즈 2 - Node.js

서론요즘 지원을 하다보면 많이 보이는 기술스택은Node.js랑 Django이다.Node.js는 프레임워크라기보다는 JVM과 같은 javascript를 돌리기 위한 엔진이라고 생각하면된다.이번에 Node를 맛보기로 한 이유는 Python은 전에 써봤고 (코테언어로) js를 한번도 안써봐서 궁금해서 써보게 되었다. (맛보기니까)Node란?우선 Node의 언어 Javascript에 대해서 알아보자javascript는 HTML 에 종속적인 언어로 정적인 html을 동적으로 동작시켜주기 위한 언어이다.그렇다 보니 이 javascript는 보통 웹 브라우저에서 돌아가는 언어였다.즉 브라우저 마다 따로 해석하는 엔진이 있었다.이러던 와중 구글 행님이 V8엔진을 탑제한 Chrome을 출시하셨다.8기통의 엔진은 좋은 효..

2024 11 04 1957. Delete Characters to Make Fancy String

문제A fancy string is a string where no three consecutive characters are equal.Given a string s, delete the minimum possible number of characters from s to make it fancy.Return the final string after the deletion. It can be shown that the answer will always be unique.요약String에서 연속으로 같은 char 3개가 나오지않게 제거풀이char를 하나씩 조회하면서 counting 하며 3개 이상이 되면 무시, 다른 글자가 나올 경우 count를 초기화하고 진행코드class Solution { pu..

알고리즘 2024.11.01

Block/Non-block vs Sync/Async

서론개발공부하다가 항상 Block, Non-Block Sync Async 이 개념에 가장 헤깔리는 개념같다읽어도 뭔지 몰겠음걍 똑같은거 같음.... 하면 하수겠지그래서 이참에 정리하고 가고자 한다.Block, Non-Block, Sync, AsyncBlock, Non-BlockBlock과 Non-Block의 차이는 A함수가 B함수를 호출 후 B함수 작업 중 A함수의 작업여부라고 말하면된다.Sync, Asyns동기 비동기의 차이는 요청한 작업의 완료 여부에 따라 순차적으로 일을 실행한다 이다.즉 동기는 순서가 보장되는 것이고, 비동기는 이 순서를 보장하지 않는다는 것이다.Sync == Block ?????저 말만 잘 들으면 결국 하나 실행될때 다른게 실행 안된다는 뜻이야? 같은 말이자나 할 수도 있다.나는..

학습 2024.10.31

2024 10 30 1671. Minimum Number of Removals to Make Mountain Array

문제You may recall that an array arr is a mountain array if and only if:arr.length >= 3There exists some index i (0-indexed) with 0 arr[i + 1] > ... > arr[arr.length - 1]Given an integer array nums​​​, return the minimum number of elements to remove to make nums​​​ a mountain array.요약산 모양으로 왼쪽으로는 감소 오른쪽으로는 증가하는 최장 집합를 찾으면 된다.풀이dfs로 깊게 들어가면서 각 index (idx)에서 1. 이전 0~idx 까지 가장 긴 증가 부분집합의 길이2. 이후 idx..

알고리즘 2024.10.30

2024 10 27 1277. Count Square Submatrices with All Ones

문제Given a m * n matrix of ones and zeros, return how many square submatrices have all ones.요약1만으로 체워진 사각형 갯수 찾기풀이누적합으로 풀면 쉬울것 같았다.행으로 누적합을 구한 매트릭스에서 다시 열로 다 더해서 누적합을 2*2 매트릭스를 만들면정사각형의 변 길이를 s라고 하였을때 [r][c],[r-s+1][c],[r][c-s+1],[r-s+1][c-s+1]이 만드는 사각형 내부의 값의 총 합은sum = prefix[r][c] - prefix[r-s][c] -prefix[r][c] + prefix[r-s][c-s]가 된다.코드class Solution { public int countSquares(int[][] matrix)..

알고리즘 2024.10.27

Spring 동시성 테스트

동시성 구현 상황 만들기이전 Redis Lock 구현하기를 만들고 나니 테스트를 짜게 되었다.이러한 상황을 만들기 위해서는 User A가 요청을 보내어 다시 조회 이후 업데이트하기 전에 User B의 조회가 일어나야한다.이러한 상황을 강제로 만들어야 한다고 생각했다.동시성 테스트Spring에서 동시성 테스트를 짜는 방법으로는 ExecutorService와 CountDownLatch가 있다.ExecutorService자바의 비동기 작업을 관리하는 Future 인터페이스를 활용한 비동기 관련 서비스이다.해당 서비스를 통해 각각의 쓰레드에서 비동기적으로 프로그램을 돌릴수 있다.ExecutorService executorService = Executors.newFixedThreadPool(쓰래드수);execut..

개발 2024.10.25

2024.10.23 2641. Cousins in Binary Tree II

문제Given the root of a binary tree, replace the value of each node in the tree with the sum of all its cousins' values.Two nodes of a binary tree are cousins if they have the same depth with different parents.Return the root of the modified tree.Note that the depth of a node is the number of edges in the path from the root node to it.요약트리 문제이다. 노드수의 제약이 10000개 밖에 되지않아 충분히 전탐으로 될꺼라고 생각했다.풀이한번 돌면서 ..

알고리즘 2024.10.23