본문 바로가기

전체보기198

[프로그래머스] 서버 증설 횟수 문제 개요온라인 게임 운영에서 시간대별 이용자 수에 따라 서버를 최소한으로 증설하는 문제입니다.문제 조건이용자 수: 각 시간대(0~23시)별 게임 이용자 수m: 서버 한 대로 감당할 수 있는 최대 이용자 수k: 서버 한 대가 운영 가능한 시간목표: 모든 게임 이용자를 감당하기 위한 최소 서버 증설 횟수핵심 규칙서버 필요 조건: 이용자 수가 m명 이상일 때만 서버가 필요필요한 서버 수: Math.floor(이용자 수 / m)서버 운영 기간: 증설한 서버는 k시간 동안 운영증설 횟수: 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회예시 분석예시 1: m=3, k=5시각 이용자 필요서버 운영서버 증설횟수0~1 0 0 0 .. 2025. 10. 10.
[프로그래머스] 지게차와 크레인 문제 개요1부터 n까지 번호가 매겨진 택배 상자들을 창고에 지그재그 패턴으로 배치하고, 특정 상자를 꺼내기 위해 필요한 총 상자 개수를 계산하는 문제다.문제 조건n: 총 택배 상자 개수w: 가로로 배치할 상자 개수 (한 행의 너비)num: 꺼내려는 상자의 번호배치 규칙첫 번째 행: 왼쪽→오른쪽으로 1, 2, 3, ..., w두 번째 행: 오른쪽→왼쪽으로 w+1, w+2, ..., 2w세 번째 행: 왼쪽→오른쪽으로 2w+1, 2w+2, ..., 3w이 패턴을 반복한다.제약 조건특정 상자를 꺼내려면 그 위에 있는 모든 상자를 먼저 꺼내야 한다.같은 열에 있는 상자들은 세로로 쌓인 구조다.예시 분석n=22, w=6일 때 배치:행 0: 1 2 3 4 5 6행 1: 12 11 10 9 8 7행 2.. 2025. 10. 10.
[프로그래머스] 주차 요금 계산 문제 개요주차 기록 배열과 요금 정책을 받아서 차량별 주차 요금을 계산하는 함수를 구현하는 문제입니다.입력 형식records: 주차 기록 배열 (예: ["16:00 3961 IN","16:00 0202 IN","18:00 3961 OUT","18:00 0202 OUT","23:58 3961 IN"])fees: 요금 정책 배열 [기본시간(분), 기본요금(원), 단위시간(분), 단위요금(원)]출력 형식차량번호 오름차순으로 정렬된 요금 배열 (예: [0, 591])요구사항 분석핵심 요구사항누적 주차시간 계산: 차량별로 모든 입차-출차 시간을 누적출차 기록 없는 경우: 마지막 입차부터 23:59까지 계산요금 계산 공식: 기본요금 + ((누적시간 - 기본시간) ÷ 단위시간) × 단위요금결과 정렬: 차량번호 오름차.. 2025. 10. 9.
[프로그래머스] k진수에서 소수 개수 구하기 문제 이해하기양의 정수 n을 k진수로 변환했을 때, 변환된 수 안에서 특정 조건에 맞는 소수의 개수를 찾는 문제입니다.조건0P0: 소수 양쪽에 0이 있는 경우P0: 소수 오른쪽에만 0이 있는 경우0P: 소수 왼쪽에만 0이 있는 경우P: 소수 양쪽에 아무것도 없는 경우단, P는 각 자릿수에 0을 포함하지 않는 소수여야 합니다.예시437674을 3진수로 변환하면 211020101011이 되고, 여기서 찾을 수 있는 조건에 맞는 소수는:211 (P0 형태)2 (0P0 형태)11 (0P 형태)총 3개입니다.접근 방법1단계: k진수 변환const kBaseNumber = n.toString(k);2단계: 0으로 구분된 숫자들 추출const numbers = kBaseNumber.split("0").filter((.. 2025. 10. 9.
[프로그래머스] 코딩 테스트 공부 문제 상황https://school.programmers.co.kr/learn/courses/30/lessons/118668알고력 공부: 1시간에 알고력 +1코딩력 공부: 1시간에 코딩력 +1문제 풀기: 문제마다 다른 시간과 보상목표는 모든 문제를 풀 수 있는 능력을 얻는 최단시간을 구하는 것이었습니다.첫 번째 시도: BFS로 접근처음에는 BFS(너비 우선 탐색)로 접근해봤다. 상태를 (알고력, 코딩력)으로 표현하고, 각 상태에서 가능한 행동들을 큐에 넣어가며 탐색했다.// BFS 방식 (첫 번째 시도)const queue = [];const visited = Array.from({ length: 151 }, () => Array(151).fill(false));하지만 이 방식에는 문제가 있었다. BFS.. 2025. 10. 8.
[프로그래머스] 2개 이하로 다른 비트 비트 연산 문제 - 내가 완전히 잘못 접근한 케이스문제를 제대로 안 읽고 시작한 게 문제였음이 문제 처음 봤을 때 그냥 "x보다 크고 비트가 1~2개 다른 수" 찾는 거라고 생각했는데, 실제로는 "가장 작은 수"를 찾는 게 핵심이었음. 문제 제대로 안 읽고 바로 코딩 시작한 게 패망의 시작이었음.내가 한 무식한 방법function findNextNumber(x) { const xBig = BigInt(x); const limit = xBig + 100000n; for (let candidate = xBig + 1n; candidate = 1 && diffCount 이거 완전 무식한 방법임. 그냥 하나씩 다 확인하면서 비트 차이 세는 거. 시간복잡도도 O(k × m)이고 비효율적임.정답 코드 (진짜 .. 2025. 10. 8.