분류 전체보기 (48) 썸네일형 리스트형 프로그래머스) 정수삼각형 (js) https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 삼각형 위 꼭지점에서 맨 아래로 이어지는 경로 중 거쳐가는 숫자들의 합이 가장 큰 경우를 찾는 문제이다. 내가 제출한 코드는 아래와 같다. function solution(triangle) { let result = 0; let arr = triangle.slice(); // (1) if(arr.length === 1) return arr[0][0]; // (2) arr[1][0] += arr[0][.. 프로그래머스) 네트워크(js) https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 그래프가 주어졌을 때 간선으로 연결된 노드 묶음을 세는 문제이다. 섬이 되는 노드 묶음의 갯수를 파악하면 된다. 내가 짠 정답코드는 다음과 같다. function solution(n, computers) { var answer = 0; let ch = Array.from({length : n}, ()=>0); // (1) const DFS = (v, ch) => { ch[v] = 1; // (3) f.. 프로그래머스) 점프와 순간이동(js) https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제의 내용이 길어서 어려워 보일 수 있지만 간략히 표현하자면 다음과 같다. 1. 0을 x로 만들어야 한다. 2. +1 칸을 이동할 때는 비용이 1이 든다. 3. 현재 위치에서 *2만큼 이동할 때는 비용이 들지 않는다. 4. 최소의 비용으로 x를 만들어야 한다 목표지점을 향하여 *2만큼 최대한 이동하고, 이렇게 도달할 수 없는 경우 +1칸씩 이동하는게 최소의 비용이 든다고 생각하였다. 그렇다면 목표지.. 코딩테스트문제 최근 코딩테스트 문제를 풀게 되었는데 잘 풀리지가 않는다. Chat GPT같은 생성형 AI 에 너무 의존하여 코드를 짜는게 아닌가 하는 생각도 들고 문제를 풀어본지도 너무 오래됬는가 하는 생각이 들었다. 그래서 시간이 날때마다 코딩테스트 문제를 풀고 풀이과정을 남기려고 한다. 브라우저 간 호환성 문제 요즘 서비스 오픈전이라 정신없는 하루를 보내고 있다. 곧 오픈일정이 다가와 QA에서 발견한 오류들을 해결하는데 시간을 쏟고 있다. 그러던 와중에 느즈막하게 프론트 영역에서 날짜 데이터가 NaN(Not a Number)으로 비정상적이게 출력되는 현상이 발견되었다. 해당오류 발견 과정과 늦게 발생된 이유는 다음과 같았다.해당 오류는 하이브리드 앱에서 발생하였다.그런데 모든 사용자에게 발생하지 않아서 QA까지 통과된 상태였다. 이 때 테스터는 안드로이드 기기 사용자였다.테스트용 앱은 안드로이드 앱이 우선 배포되었고, 시간이 지나서 아이폰용 앱이 배포되었기 때문에 아이폰에서의 테스트는 상대적으로 늦게 이루어졌다.최종 QA에서 이 오류가 발견되었는데 해당 테스터는 아이폰 사용자였다.사파리(Safari) 브라우저가.. 레이스 컨디션 (Race Condition) -03. Lettuce, Redisson 일반적으로 분산 서버 환경에서 하나의 데이터베이스를 사용하더라도 여러 대의 서버가 해당 데이터베이스에 동시에 접근하고 데이터를 수정하려고 할 때는 여전히 동시성 문제가 발생할 수 있다.이러한 상황에서 낙관적 락(Optimistic Locking)과 비관적 락(Pessimistic Locking)이 물론 유용할 수 있지만,분산 락(Distributed Locking)이나 다른 분산 동시성 제어 메커니즘을 고려해야 하는 경우가 생길 수 있다.그 이유는 다음과 같다. 데이터베이스 트랜잭션 범위: 여러 서버에서 하나의 데이터베이스에 접근할 때, 트랜잭션의 범위가 여러 서버에 걸칠 수 있다. 이 경우, 낙관적 락과 비관적 락만으로는 트랜잭션 일관성을 보장하기 어려울 수 있다. 동시성 제어의 복잡성: 분산 환경에.. 네이버 뉴스 크롤링 해보기 (Node.js) + 생성형AI(Gemini)로 글 다듬기 아내가 요즘 경제뉴스에 관심이 많다. 그래서 관련 뉴스들을 보고 다시 정리하는 일을 매일 하고 있다. 옆에서 보면 대단하다고도 생각되고 기특하다고도 생각이 든다. 어느날과 같이 옆에서 뉴스 기사들을 정리하며 블로그에 글을 작성하는 아내를 지켜보고 있는데, 아내가 나를 보면서 이런 말을 하였다. 그래서 다음과 같은 동작을 하는 어플리케이션을 구상해 보기로 하였다. 특정 사이트에서 뉴스 기사들을 가져온다. 가져온 기사들을 특정 폴더에 문서파일로 저장한다. + 가져온 기사들을 생성형 AI를 통해서 좀더 다듬으면 좋을 것 같다. + 차후에는 파일저장이 아닌 자동으로 블로그나 NOTION 등에 글이 작성되게 하면 좋겠다. 우선 웹 크롤링이 주된 기능이므로 Node.js를 선택하였다. 그 이유는 다음과 같다. No.. 레이스 컨디션 (Race Condition) -02. Pessimistic Lock, Optimistick Lock 레이스 컨디션을 방지하기 위해 어떤 방법을 사용해야 하는지 이어서 글을 쓰려고 한다.이전글에서 알아보았듯이 @Transactional 을 사용하는 방법이나 synchronized 를 사용하는 방법은 모든 동시성 문제를 해결할 수 없다. 따라서 이번글에서는 레이스 컨디션을 방지하기 위해 데이터베이스에서 사용하는전략인 페시미스틱 락(Pessimistic Lock) 과 옵티미스틱 락(Optimistic Lock)에 대해 정리해 보려고 한다. 1. 페시미스틱 락(Pessimistic Lock)페시미스틱 락은 실제 데이터에 Lock을 걸어서 정합성을 맞추는 방법이다. 즉 데이터를 읽고 업데이트 하는 동안 다른 트랜젝션이 해당 데이터에 접근하지 못하도록 락을 걸어 동시성 문제를 방지하는 방법이다. 작동방식은 다음과.. 이전 1 2 3 4 5 6 다음