[프로그래머스] 호텔 대실 (JS)
·
SOLVED.
1. 문제 설명 주어진 book_time 배열을 이용해, 호텔 방을 예약하는 문제입니다. 각 예약은 시작 시간과 종료 시간이 포함되어 있습니다. 이 문제는 예약을 처리하면서 동시에 필요한 최소 방의 개수를 구하는 문제입니다. 예약 시간은 [시작 시간, 종료 시간] 형태로 주어집니다. 각 예약은 겹치지 않게 처리되어야 하며, 방이 부족할 경우 새로 방을 할당해야 합니다. 한 예약이 종료된 후 최소 10분 이상 지나야만 다른 예약이 들어올 수 있습니다. 예약 시간이 주어졌을 때, 이 예약들을 처리하기 위한 최소 방의 수를 구하는 문제입니다.  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2. 해결 과정이..
[프로그래머스] 2 x N 타일링 (JS) (+모듈러 연산 방식)
·
SOLVED.
직사각형 타일 채우기 1. 문제 설명 가로 길이가 2, 세로 길이가 1인 직사각형 모양의 타일이 있다.이 타일을 이용하여 세로 길이가 2이고 가로 길이가 n인 바닥을 채우는 방법을 구하는 문제이다. 타일을 채우는 방법은 다음 두 가지가 있다:타일을 가로로 배치하는 경우타일을 세로로 배치하는 경우그래서 가로 길이 n = 7인 직사각형은 아래처럼 타일로 채울 수 있다.  2. 해결 과정이 문제는 동적 프로그래밍(DP)을 사용하여 풀 수 있다.DP는 작은 문제부터 차근차근 해결하여 큰 문제를 푸는 방식이다. a.  기본 아이디어가로 길이 n인 직사각형 바닥을 채우는 방법을 생각해 보면:마지막에 가로로 타일 1개를 놓은 경우, 남은 바닥의 길이는 n-1이 된다. (경우 1) 마지막에 세로로 타일 2개를 놓은 경..
[프로그래머스] 구명보트 (JS)
·
SOLVED.
구명보트를 최대한 적게 사용하여 사람들을 구출하기 소 잃고 외양간 고치듯이 그리디 문제 풀어보기..~ 문제 설명무인도에 갇힌 사람들을 구명보트로 구출해야 하는 문제입니다. 각 구명보트에는 최대 두 명이 탈 수 있으며, 보트에는 무게 제한이 있습니다. 우리는 가능한 한 최소한의 보트를 사용하여 모든 사람을 구출해야 합니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg인 경우, 2번째 사람(50kg)과 4번째 사람(50kg)은 같은 보트를 탈 수 있지만 1번째 사람(70kg)과 3번째 사람(80kg)은 같이 탈 수 없습니다. 이때 최소한 3개의 보트가 필요합니다. 문제 분석이 문제는 최적화 문제로, 사람들의 몸무게를 고려하여 최소한의 구명보..
[프로그래머스] 기사단원의 무기 (JS) (+ 약수 구하는 최적의 알고리즘)
·
SOLVED.
기사단원의 무기: 약수 구하는 최적의 알고리즘 이 문제는 기사들이 자신의 번호에 해당하는 약수의 개수만큼의 공격력을 가진 무기를 구매하는 문제입니다.또한, 특정한 제한 수치 이상의 공격력을 가지게 되는 기사는 대체 공격력을 가진 무기로 변경해서 구매해야합니다. 즉! 각 기사의 무기 공격력을 구하고, 이를 모두 합산하여 무기 제작에 필요한 철의 총 무게를 구하는 것이 답입니다. 1. 문제 해결을 위한 주요 단계약수 개수 계산: 각 기사 번호의 약수를 구하는 방법을 이용해, 각 번호에 해당하는 약수의 개수를 구합니다.제한 조건 처리: 약수의 개수가 주어진 제한 수치보다 큰 경우, 대체 공격력을 적용합니다.합산: 모든 기사의 공격력(즉, 약수의 개수 또는 대체 공격력)을 합산하여 최종 결과를 반환합니다. 2...
[프로그래머스] 문자열 나누기 (JS)
·
SOLVED.
문자열 나누기 문제: 규칙에 따라 문자열을 분해하는 방법 이 문제는 문자열을 주어진 규칙에 따라 여러 부분으로 분해하고, 분해된 문자열의 개수를 구하는 문제이다.  문자열을 첫 글자를 기준으로 나누고 그에 따라 조건이 충족되는 시점마다 분리하는 과정을 반복하여 최종적으로 분해된 문자열의 개수를 구하기만 하면 된다.   1. 문제 정의첫 글자를 읽고, 이 글자를 x라고 정의한다. 문자열을 왼쪽에서 오른쪽으로 읽어나가면서 x의 개수와 x가 아닌 다른 문자의 개수를 각각 센다두 개수가 같아지는 순간까지 읽은 부분을 하나의 문자열로 분리한다나머지 문자열에 대해 동일한 과정을 반복합니다. 남은 문자열이 없으면 종료한다만약 문자열을 다 읽었는데도 두 개수가 같지 않다면, 현재까지 읽은 부분을 하나의 문자열로 처리하..
[프로그래머스 Level 1] 과일 장수 (JS)
·
SOLVED.
과일 장수의 최대 이익 계산: 점수에 따라 사과 상자 구성하기 이 문제는 주어진 조건에 따라 사과 상자를 구성하고, 최대 이익을 계산하는 문제입니다.사과는 상태에 따라 1점부터 k점까지 점수가 매겨져 있으며, 한 상자에 m개의 사과를 담습니다. 상자에 담긴 사과 중 가장 낮은 점수를 기준으로 상자 가격이 결정되며, 가능한 한 최대 이익을 얻는 것이 목표입니다.  1. 문제 정의 사과는 1점에서 k점까지 분류되며, 사과 한 상자의 가격은 그 상자에 담긴 사과 중 가장 낮은 점수에 따라 정해집니다. 사과가 주어졌을 때, 다음 조건을 만족하는 상자를 만들어 최대 이익을 계산하는 것이 이번 문제의 핵심입니다한 상자에는 정확히 m개의 사과를 담습니다.상자의 가격은 최저 사과 점수 * m으로 계산됩니다.남는 사과는..
[프로그래머스 Level 2] 방문 길이 (JS)
·
SOLVED.
방문길이; 좌표 평면에서 처음 걸어본 길의 길이 구하기  이 문제는 좌표 평면에서 게임 캐릭터가 명령에 따라 이동하는 경로를 추적하고, 처음으로 걸어본 길의 길이를 계산하는 문제이다. 캐릭터는 U, D, R, L 명령어로 이동하며, 경계를 벗어나는 명령은 무시해야한다.그리고 그 과정에서 중복된 길을 제외하고, 처음으로 지나간 길을 리턴해야한다. 1. 문제 정의 캐릭터는 좌표평면에서 (-5, -5)와 (5, 5)로 이루어진 제한된 영역 안에서 이동하며, 주어진 명령어에 따라 움직인다.U: 위쪽으로 한 칸 이동D: 아래쪽으로 한 칸 이동R: 오른쪽으로 한 칸 이동L: 왼쪽으로 한 칸 이동캐릭터는 (0, 0)에서 시작하고, 이동 경로를 추적하여 처음 지나간 길의 길이를 계산한다.단! 이미 지나온 길이라면 카운..
[프로그래머스 Level 3] 입국심사 (JS)
·
SOLVED.
입국심사 문제 해결하기: 이분 탐색을 활용한 최적화    입국심사를 기다리는 많은 사람들이 있을 때, 각 심사대마다 심사를 진행하는 데 걸리는 시간이 다를 수 있다.이러한 상황에서 모든 사람이 심사를 받는 데 걸리는 시간을 최소화하려면 어떻게 해야 할까?이 문제는 효율적인 탐색 방법인 이분 탐색을 이용해 해결할 수 있다.1. 문제 정의입국심사를 기다리는 사람 수 n명과 각 심사관이 한 명을 심사하는 데 걸리는 시간이 담긴 배열 times가 주어진다. 모든 사람들이 심사를 완료하는 데 걸리는 최소 시간을 구하는 것이 목표이다.제한사항:심사 인원: 1명 이상 1,000,000,000명 이하심사 시간: 1분 이상 1,000,000,000분 이하심사관 수: 1명 이상 100,000명 이하(+ 이렇게 천문학적인 ..
[프로그래머스] 덧칠하기 (JS)
·
SOLVED.
문제 링크 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 해석문제는 벽에 페인트를 다시 칠해야 하는 구역들이 주어졌을 때, 최소한의 횟수로 페인트칠을 하는 방법을 찾는 것이다.벽의 길이는 `n` 미터이며, 각 구역은 1미터씩 나누어져 있고, 롤러의 길이는 `m` 미터이다.페인트칠을 할 수 있는 최소 횟수를 구해야 한다. 접근 방법1. 페인트칠이 필요한 구역 파악하기: 주어진 `section` 배열은 페인트칠이 필요한 구역의 번호를 담고 있다. 이 배열의 각 요소는 구역 번호를 나타낸다.  2. 롤러의 범위 확인:롤러는 한 번에 연속된 `m`미터를 칠할 ..