전체 글 146

[백준] 14890 경사로 - Java

문제https://www.acmicpc.net/problem/14890  문제 개요주어진 N×N 크기의 지도에서 행과 열을 기준으로 한쪽 끝에서 다른쪽 끝까지 지나갈 수 있는 길의 개수를 구하는 문제입니다. 길은 모든 칸의 높이가 같거나, 경사로를 놓아 높이 차이를 극복할 수 있을 때 통과할 수 있습니다. 경사로를 놓을 때는 다음 조건을 만족해야 합니다.경사로는 낮은 칸에 놓으며, 연속된 L개의 칸에 바닥이 접해야 합니다.낮은 칸과 높은 칸의 높이 차이는 1이어야 합니다.낮은 칸은 모두 같은 높이여야 하고, L개 이상 연속되어 있어야 합니다.경사로가 경사로 위에 중복으로 놓이거나, 범위를 벗어나면 안 됩니다.  접근 방법이 문제는 각 행과 열을 각각 확인하면서 조건을 만족하는 길의 개수를 구해야 합니다...

문제/백준 2025.01.24

[ODOQ] 캐시 스탬피드(Cache Stampede)

[One Day One Question]캐시 스탬피드(Cache Stampede)에 대해서 설명해 주세요.  캐시 스탬피드(Cache Stampede)는 다수의 요청이 동시에 캐시 갱신을 유발하여 서버 부하가 급격히 증가하는 현상을 말합니다. 캐시 만료 시점에 다수의 클라이언트가 동일한 데이터를 동시에 요청하면, 모든 요청이 캐시를 우회하여 데이터베이스(DB) 또는 백엔드 서버로 몰리게 됩니다. 이는 서버 과부하로 이어져 성능 저하, 서비스 지연, 심지어 서버 다운으로 연결될 수 있습니다.캐시 스탬피드 발생 과정캐시가 만료되어 클라이언트가 캐시에서 데이터를 가져오지 못함.동일한 데이터에 대한 요청이 다수의 클라이언트로부터 동시에 발생.모든 요청이 데이터베이스나 원본 서버로 전달되며 부하가 급증.서버 응답..

cs/ODOQ 2025.01.23

[ODOQ] 지연로딩, 즉시로딩

[One Day One Question]지연로딩과 즉시로딩에 대해서 설명해 주세요. 지연 로딩(Lazy Loading)과 즉시 로딩(Eager Loading)은 주로 데이터베이스나 웹 애플리케이션에서 데이터를 로드하는 방법을 설명할 때 사용되는 용어입니다. 1. 지연 로딩(Lazy Loading)개념:필요할 때 데이터를 로드하는 방식.객체를 처음 사용할 때(혹은 요청 시점)에 데이터를 가져옵니다.특징:초기 로드 시간이 짧아집니다. (필요한 데이터만 불러오기 때문)불필요한 데이터 로드를 방지할 수 있어 메모리 효율적.하지만, 데이터를 요청하는 시점마다 추가적인 쿼리가 실행될 수 있습니다.예시:웹페이지에서 이미지를 스크롤로 보여줄 때, 스크롤 위치에 따라 이미지를 로드하는 방식.관계형 데이터베이스에서, 연관..

cs/ODOQ 2025.01.19

[백준] 14503 로봇 청소기 - Java

https://www.acmicpc.net/problem/14503 문제 개요로봇 청소기가 주어진 방에서 청소를 시작하며 특정 규칙에 따라 움직입니다. 방의 크기, 로봇 청소기의 초기 위치와 방향, 방의 상태(벽과 빈 칸)가 주어졌을 때, 로봇 청소기가 작동을 멈출 때까지 청소한 칸의 개수를 계산하는 문제입니다.로봇 청소기의 동작 규칙:현재 칸 청소: 현재 위치가 청소되지 않은 빈 칸이면 청소.주변 확인:청소되지 않은 빈 칸이 있으면 반시계 방향으로 90도 회전.회전 후, 앞 칸이 청소되지 않은 빈 칸이면 전진.후진:주변에 청소되지 않은 칸이 없으면, 후진이 가능한 경우 후진.후진이 불가능하면 멈춤. 접근 방법입력 처리 및 초기화:방의 크기와 상태, 로봇의 초기 위치와 방향을 입력받습니다.방의 상태를 저..

문제/백준 2025.01.19

[백준] 14499 주사위 굴리기 - Java

https://www.acmicpc.net/problem/14499 문제 개요이 문제는 크기가 N×M인 지도 위에서 주사위를 굴리며 주어진 명령에 따라 이동시키고, 이동한 후의 주사위 상태를 업데이트하는 시뮬레이션 문제입니다.주사위의 전개도는 주어진 상태를 기반으로 동쪽, 서쪽, 북쪽, 남쪽으로 굴릴 때 각 면의 값을 적절히 변경해야 하며, 주사위가 지도 위를 이동할 때 다음 규칙을 따릅니다:이동한 칸에 쓰여 있는 값이 0이면 주사위의 바닥면 값을 그 칸에 복사합니다.이동한 칸에 값이 0이 아니면, 해당 값을 주사위의 바닥면에 복사하고, 칸의 값은 0으로 변경됩니다.주사위가 지도 밖으로 벗어나는 이동 명령은 무시합니다.  접근 방법1. 주사위 전개도의 표현주사위의 전개도를 배열로 표현하여 굴릴 때 각 면..

문제/백준 2025.01.18

[ODOQ] 스케일 업(Scale-Up) , 스케일 아웃(Scale-Out)

[One Day One Question]스케일 업(Scale-Up)과 스케일 아웃(Scale-Out)에 대해서 설명해 주세요. 스케일 아웃(Scale-Out)과 스케일 업(Scale-Up)은 시스템의 성능과 용량을 확장하는 방식에서의 차이를 나타냅니다. 1. 스케일 업 (Scale-Up)개념:기존의 단일 시스템(서버, 데이터베이스 등)의 성능을 높이는 방식.더 강력한 하드웨어(더 빠른 CPU, 더 많은 메모리, 더 큰 디스크 용량 등)로 업그레이드하여 확장.특징:장점:관리가 단순하며 추가적인 소프트웨어 변경이 필요 없을 때가 많음.단일 시스템으로 유지되므로 복잡성이 적음.단점:물리적 하드웨어의 한계에 도달하면 더 이상 확장 불가능.고성능 하드웨어의 비용이 급격히 증가할 수 있음.적용 사례:데이터베이스 서..

cs/ODOQ 2025.01.17

[ODOQ] ACID란?(데이터베이스)

[One Day One Question]ACID에 대해서 설명해 주세요. ACID는 데이터베이스 관리 시스템(DBMS)에서 트랜잭션의 신뢰성과 안정성을 보장하기 위해 정의된 네 가지 속성을 나타냅니다. ACID는 각각 Atomicity, Consistency, Isolation, Durability의 약자입니다. 1. Atomicity (원자성)설명: 트랜잭션이 모두 실행되거나, 전혀 실행되지 않아야 함을 보장합니다.즉, 트랜잭션 내의 작업이 일부만 실행되는 일은 없고, 실패 시 모든 작업이 롤백됩니다.예: 은행에서 계좌 A에서 B로 돈을 이체할 때, A에서 돈이 빠져나갔지만 B에 입금되지 않으면 안 됩니다. 트랜잭션은 둘 다 완료하거나 둘 다 실행하지 않아야 합니다. 2. Consistency (일관성..

cs/ODOQ 2025.01.16

[프로그래머스] 땅따먹기 - Java

https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요'땅따먹기' 게임은 N행 4열로 이루어진 땅(land)에서 진행됩니다. 각 칸에는 점수가 적혀 있고, 1행부터 N행까지 내려가면서 한 번에 하나의 칸을 밟아 내려가야 합니다. 단, 같은 열을 연속해서 밟을 수 없는 규칙이 있습니다. 우리가 해야 할 일은, 주어진 땅에서 점수를 최대화할 수 있도록 게임을 진행하며, 마지막 행에 도달할 때 얻을 수 있는 최대 점수를 구하는 것입니다.  접근 방법이 문제는 **동적 계획법(DP)**을 활용..

[ODOQ] REST란?

[One Day One Question]REST에 대해서 설명해 주세요.REST(Representational State Transfer)는 웹 서비스 설계를 위한 아키텍처 스타일로, 클라이언트와 서버 간의 통신을 단순하고 효율적으로 하기 위해 설계되었습니다. REST는 HTTP 프로토콜을 기반으로 동작하며, 웹 애플리케이션 개발에서 가장 널리 사용되는 표준 중 하나입니다. 1. REST의 주요 특징자원(Resource) 중심 설계REST에서는 모든 것을 자원으로 간주합니다.자원은 고유한 URI(Uniform Resource Identifier)로 식별됩니다.예:https://example.com/users/123 (사용자 ID 123인 사용자)https://example.com/products/45 (..

cs/ODOQ 2025.01.15

[ODOQ] 로드 밸런싱(Load Balancing)

[One Day One Question]로드 밸런싱(Load Balancing)에 대해서 설명해 주세요. 로드 밸런싱(Load Balancing)은 네트워크 트래픽이나 컴퓨팅 작업을 여러 서버나 리소스에 분산하여 시스템의 성능, 신뢰성, 가용성을 최적화하는 기술입니다. 로드 밸런서는 이를 수행하는 하드웨어 장치나 소프트웨어 애플리케이션을 의미합니다. 로드 밸런싱의 주요 목적성능 향상: 여러 서버가 동시에 작업을 처리하므로 응답 속도와 처리 능력을 개선합니다.가용성 증가: 하나의 서버에 장애가 발생해도 다른 서버가 요청을 처리할 수 있도록 하여 서비스를 중단 없이 유지합니다.확장성: 필요에 따라 서버를 추가하여 트래픽 증가에 유연하게 대응할 수 있습니다.리소스 최적화: 서버 간 작업을 고르게 분산해 특정 ..

cs/ODOQ 2025.01.10