728x90

2026/02/04 7

[BOJ 19532] 수학은 비대면강의입니다 - [수학, 브루트포스]

[BOJ 19532] 수학은 비대면강의입니다 - [수학, 브루트포스]문제 링크https://www.acmicpc.net/problem/19532문제 요약주어진 연립방정식 $ax + by = c$, $dx + ey = f$를 만족하는 정수 $(x, y)$쌍을 구하는 문제입니다. $x$와 $y$는 각각 $-999$ 이상 $999$ 이하의 정수임이 보장됩니다.접근 방법자료구조: 정수형 변수 (int)알고리즘: 브루트포스 (완전 탐색)핵심 아이디어: - $x$와 $y$의 범위가 각각 1,999개로 매우 작습니다.가능한 모든 $x, y$ 조합($약 2000 \times 2000 = 4,000,000$)을 대입하여 두 식을 모두 만족하는 경우를 찾습니다.풀이 코드#include using namespace std;..

코딩테스트 2026.02.04

[BOJ 2231] 분해합 - 브루트포스 알고리즘

[BOJ 2231] 분해합 - 브루트포스 알고리즘문제 링크https://www.acmicpc.net/problem/2231문제 요약어떤 자연수 $N$의 분해합은 $N$과 $N$을 이루는 각 자릿수의 합을 의미한다. 자연수 $N$이 주어졌을 때, $N$의 가장 작은 생성자(분해합이 $N$이 되는 수)를 구해내는 프로그램을 작성하시오.접근 방법자료구조: int (입력값 $N$이 최대 1,000,000이므로 정수형으로 충분함)알고리즘: 브루트포스 (Brute-force)핵심 아이디어: - 생성자 $M$은 항상 $N$보다 작다.1부터 $N$까지 모든 수를 순회하며 각 수의 분해합을 계산한다.처음으로 분해합이 $N$과 일치하는 수를 발견하면, 그것이 가장 작은 생성자이므로 출력 후 종료한다.$N$까지 탐색했음에도..

코딩테스트 2026.02.04

[BOJ 2798] 블랙잭 - [브루트포스]

[BOJ 2798] 블랙잭 - [브루트포스]문제 링크https://www.acmicpc.net/problem/2798문제 요약$N$개의 카드 중에서 3장을 골라 합을 만들 때, 목표값 $M$을 넘지 않으면서 $M$에 가장 가까운 카드 3장의 합을 구하는 문제.접근 방법자료구조: std::vector (입력받은 카드 숫자를 저장하기 위한 동적 배열)알고리즘: 브루트포스 (완전 탐색)핵심 아이디어: - 카드 개수 $N$이 최대 100개로 매우 적음.3장을 뽑는 조합($_NC_3$)의 경우의 수는 최대 161,700가지이므로, 3중 반복문을 통해 모든 경우를 다 계산해도 제한 시간(1초) 내에 충분히 해결 가능함.풀이 코드#include #include #include using namespace std;in..

코딩테스트 2026.02.04

req, res, next 란?

1. 정체 파악하기 (Definition)req (Request, 요청 객체): 클라이언트(브라우저)가 보낸 모든 정보가 담겨 있습니다. "누가, 어디서, 무엇을 가지고 왔나?"를 알고 싶을 때 뒤져보는 가방입니다.res (Response, 응답 객체): 서버가 클라이언트에게 보낼 도구들이 들어 있습니다. "데이터를 보낼까? 파일을 보낼까? 에러를 낼까?"를 결정하는 리모컨입니다.next (Next, 다음 단계 호출 함수): 현재 미들웨어에서 할 일을 다 마쳤으니, "다음 검문소(미들웨어)로 넘어가!"라고 신호를 주는 벨입니다.2. 왜 사용하는가? (Purpose)이 세 가지 인자가 있어야만 서버가 체계적인 업무 분담을 할 수 있습니다.데이터 전달 (req): 사용자가 입력한 아이디, 현재 위치, 쿠키 ..

기술 학습 2026.02.04

미들웨어(Middleware)란?

1. 미들웨어란 무엇인가? (Definition)미들웨어는 이름 그대로 **'중간(Middle)에 있는 소프트웨어'**입니다. 클라이언트(브라우저)에서 보낸 **요청(Request)**이 서버의 최종 **응답(Response)**에 도달하기 전까지 거쳐가는 모든 함수를 말합니다.Express 앱은 사실상 수많은 미들웨어가 줄지어 서 있는 파이프라인과 같습니다.2. 왜 사용하는가? (Identity & Benefits)만약 미들웨어가 없다면, 모든 라우트(URL)마다 똑같은 코드를 반복해서 써야 합니다. 미들웨어를 쓰면 공통적인 작업을 한 번에 관리할 수 있어요.공통 로직 처리: 로그인 여부 확인, 로그 기록(Logging), 데이터 파싱 등 모든 요청에 필요한 작업을 자동화합니다.보안: 이상한 요청이 들..

기술 학습 2026.02.04

Passport란?

1. Passport란 무엇인가? (Definition)Passport는 Node.js용 인증(Authentication) 미들웨어입니다.웹 사이트에서 "이 사용자가 누구인지" 확인하는 절차를 담당하죠. Express에 딱 들어맞게 설계되어 있어서 app.use()로 간편하게 연결할 수 있습니다.2. 왜 사용하는가? (Identity & Benefits)로그인을 직접 구현(Hard Coding)하려고 하면 다음과 같은 복잡한 문제에 직면합니다.비밀번호를 어떻게 안전하게 대조할 것인가?로그인 상태를 세션(Session)에 저장할 것인가, 토큰(JWT)으로 관리할 것인가?구글, 카카오 등 소셜 로그인은 각각 API 형식이 다른데 어떻게 통합할 것인가?Passport를 쓰면 이 고민이 해결됩니다.단일 인터페이..

기술 학습 2026.02.04

[Programmers] 단속카메라 - [탐욕법(Greedy)]

[Programmers] 단속카메라 - [탐욕법(Greedy)]문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42884문제 요약고속도로를 이용하는 차량들의 진입/진출 지점이 주어질 때, 모든 차량이 최소 한 번은 카메라를 만나도록 설치해야 하는 최소 카메라 개수를 구하는 문제.접근 방법자료구조: std::vector> (차량 경로 저장)알고리즘: 탐욕법 (Greedy Algorithm)핵심 아이디어: 1. 차량을 진출 지점 기준으로 오름차순 정렬한다. 2. 가장 먼저 나가는 차량의 진출 지점에 카메라를 설치한다. 3. 다음 차량의 진입 지점이 현재 카메라 위치보다 뒤에 있다면, 해당 차량의 진출 지점에 새로운 카메라를 설치한다.풀이 코드#..

코딩테스트 2026.02.04
728x90