전체 글 125

[프로그래머스] Lv.1 카드 뭉치 - JAVA

문제코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.한 번 사용한 카드는 다시 사용할 수 없습니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한 후 두 번째 카..

프로그래머스 2024.08.29

[프로그래머스] Lv.1 대충 만든 자판 - JAVA

문제휴대폰의 자판은 컴퓨터 키보드 자판과는 다르게 하나의 키에 여러 개의 문자가 할당될 수 있습니다. 키 하나에 여러 문자가 할당된 경우, 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀝니다.예를 들어, 1번 키에 "A", "B", "C" 순서대로 문자가 할당되어 있다면 1번 키를 한 번 누르면 "A", 두 번 누르면 "B", 세 번 누르면 "C"가 되는 식입니다.같은 규칙을 적용해 아무렇게나 만든 휴대폰 자판이 있습니다. 이 휴대폰 자판은 키의 개수가 1개부터 최대 100개까지 있을 수 있으며, 특정 키를 눌렀을 때 입력되는 문자들도 무작위로 배열되어 있습니다. 또, 같은 문자가 자판 전체에 여러 번 할당된 경우도 있고, 키 하나에 같은 문자가 여러 번 할당된 경우도 있습니다. 심지어 ..

프로그래머스 2024.08.26

[프로그래머스] Lv.1 덧칠하기 - JAVA

문제어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다.넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다.한 구역에 페인트를 여러 번 칠해도 되고 다시 칠해야 할 구역이 아닌 곳에 페인트를 칠해도 되지만 다시 칠하기로 정한 구역은 적어도..

프로그래머스 2024.08.26

[프로그래머스] Lv1. 바탕화면 정리 - JAVA

문제컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을 가집니다. 드래그를 하면 파일들을 선택할 수 있고, 선택된 파일들을 삭제할 수 있습니다. 머쓱이는 최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택해서 한 번에 지우려고 하며 드래그로 파일들을 선택하는 방법은 다음과 같습니다.예를 들어 wallpaper = [".#...", "..#..", "...#."]인 바탕화면을 그림으로 나타내면 다음과 같습니다. 컴퓨터 바..

프로그래머스 2024.08.26

[NEXT.JS] Zustand

개요Zustand는 간단하면서도 강력한 상태 관리 라이브러리입니다. React 애플리케이션에서 전역 상태를 쉽게 관리할 수 있게 해주며, Redux와 비교했을 때 훨씬 더 간단하고 직관적인 API를 제공합니다.Zustand는 독일어로 "상태"를 의미하며, React의 Hooks를 기반으로 합니다.  특징간단한 APIZustand는 매우 간단한 API를 제공하여, 몇 줄의 코드만으로 상태를 정의하고 사용할 수 있습니다.이는 Redux와 같은 복잡한 설정 없이도 쉽게 상태 관리를 할 수 있게 해줍니다.import create from 'zustand';const useStore = create(set => ({ count: 0, increment: () => set(state => ({ count: st..

[NEXT.JS] SWR

개요SWR(Stale-While-Revalidate)은 React Hooks를 사용하여 데이터 가져오기와 캐싱을 간단하게 만들어주는 라이브러리입니다. Next.js와 함께 사용하면 매우 효율적인 데이터 페칭을 구현할 수 있습니다. SWR은 Vercel에서 개발한 라이브러리로, 최신 데이터 페칭 전략을 제공합니다.  특징자동 캐싱 및 재검증 (Stale-While-Revalidate)SWR의 이름에서 알 수 있듯이, 데이터가 오래되었는지 여부에 따라 자동으로 데이터를 캐싱하고, 백그라운드에서 재검증합니다.이는 데이터의 신선도를 유지하면서 빠른 응답을 제공합니다.import useSWR from 'swr';import axios from 'axios';const fetcher = url => axios.ge..

[NEXT.JS] Axios

개요Axios는 HTTP 클라이언트 라이브러리로, 브라우저와 Node.js 환경에서 모두 사용할 수 있는 도구입니다. 주로 비동기 HTTP 요청을 쉽게 관리하고 처리하는 데 사용됩니다.  특징Promise 기반Axios는 Promise API를 사용하여 비동기 요청을 처리합니다.이를 통해 콜백 헬(callback hell)을 피하고, 비동기 코드를 더 읽기 쉽게 작성할 수 있습니다.axios.get('/api/data') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); 인터셉터 (Interceptors)요청(request) 또는 응답(response)이 처리되기 전에..

[NEXT.JS] Express.js

개요Express.js는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크로, 특히 웹 서버와 API를 개발하는 데 널리 사용됩니다. Express는 미들웨어와 라우팅 기능을 제공하며, Node.js의 기능을 확장하고 개발자가 웹 애플리케이션을 더 쉽게 구축할 수 있도록 돕습니다.  특징간결함과 유연성- Express는 매우 가볍고 간결한 프레임워크로, 필요한 기능만 포함하고 있어 사용자가 원하는 대로 확장하고 맞춤화할 수 있습니다.- 프레임워크가 복잡하지 않아 학습 곡선이 비교적 낮습니다. 미들웨어Express의 핵심 개념 중 하나는 미들웨어입니다. 미들웨어는 요청과 응답 객체를 통해 각기 다른 작업을 수행하는 함수의 연속입니다.다양한 서드파티 미들웨어를 사용할 수 있으며, 필요에 따라 ..

[JAVA] Exception Handling

개요Java에서 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고, 프로그램의 비정상적인 종료를 방지하는 중요한 기능입니다. 예외 처리를 통해 프로그램이 오류 상황에서도 적절하게 대응할 수 있도록 합니다.  기본 개념 예외(Exception) - 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류.예외 처리(Exception Handling) - 예외 발생 시 적절한 대응을 하여 프로그램의 정상적인 흐름을 유지하는 방법.   예외의 종류 Checked Exception - 컴파일 시점에서 예외 발생 가능성을 검사하며, 반드시 처리해야 합니다. 예: IOException, SQLException.Unchecked Exception - 런타임 시점에서 예외 발생 가능성을 검사하며, 선택적으로..

[SPRING] Sleuth

개요Spring Cloud Sleuth는 분산 시스템에서 트랜잭션을 추적하고, 각 서비스 간의 요청을 모니터링하는 도구입니다. Sleuth는 각 서비스 호출에 고유한 트레이스 ID와 스팬 ID를 추가하여 분산 추적을 가능하게 합니다. 이를 통해 개발자는 서비스 간의 호출 관계와 성능 병목 현상을 쉽게 파악할 수 있습니다 주요 기능분산 추적 - 트랜잭션을 추적하여 서비스 간의 호출 관계를 시각화합니다.트레이스 ID와 스팬 ID - 각 요청에 고유한 식별자를 추가하여 추적을 용이하게 합니다.Zipkin 통합 - Zipkin과 통합하여 추적 정보를 시각화하고 분석할 수 있습니다.  설정build.gradle// https://mvnrepository.com/artifact/org.springframework...