끄적끄적 코딩
[Javascript] 프로그래머스 - 카펫
알고리즘 2025. 1. 8. 20:58

문제 설명갈색 격자 수 brown과 노란색 격자 수 yellow가 주어질 때, 카펫의 가로와 세로 크기를 구하는 함수를 작성하세요.제한사항brown: 8 이상 5,000 이하인 자연수yellow: 1 이상 2,000,000 이하인 자연수가로 길이 ≥ 세로 길이해결 방법알고리즘: 완전 탐색 (Brute Force)구현 방법탐색 범위는 Math.floor(brown / 2) + 2를 기반으로 설정합니다.세로 길이(height)를 3부터 탐색 범위까지 반복하며, 가로 길이(width)를 계산합니다.조건을 만족하면 [width, height]를 반환합니다.시간 복잡도탐색: O(N)구현 코드function solution(brown, yellow) { const outline = Math.floor(brown ..

[Javascript] 백준 1912번 연속합
알고리즘 2025. 1. 7. 20:02

문제 설명n개의 정수로 이루어진 임의의 수열이 주어집니다. 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 합니다. 단, 수는 반드시 한 개 이상 선택해야 합니다.제한 조건정수의 개수 nnn: 1 ≤ n ≤ 100,000각 정수 ai​: −1,000 ≤ ai ≤ 1,000해결 방법알고리즘 분류: 다이나믹 프로그래밍핵심 아이디어각 위치에서의 최대 연속합을 계산하기 위해 Kadane's Algorithm을 사용합니다.현재까지의 최대 연속합과 비교하여 최댓값을 유지합니다.알고리즘 단계현재까지의 최대 연속합 유지:currentMax: 이전 위치까지의 최대 연속합에 현재 값을 더한 값과 현재 값 중 더 큰 값.전체 최대값 갱신:maxSum: 각 단계의 currentMax와 기존 ..

[Javascript] 백준 25957번 단어 우월 효과
알고리즘 2025. 1. 6. 23:33

1. 문제 설명문장의 단어들이 특정 규칙에 따라 섞여 있습니다. 각 단어는 첫 번째와 마지막 글자가 고정된 상태에서 나머지 글자의 순서만 섞일 수 있습니다. 주어진 문장의 단어를 원래 단어의 형태로 복원하는 것이 목표입니다.2. 제한 조건원본 단어의 개수 N과 문장의 단어 개수 M은 각각 최대 200,000개.각 단어의 길이는 1 이상 8 이하입니다.각 단어의 첫 글자와 마지막 글자를 제외한 나머지 글자의 배열만 다를 뿐, 동일한 단어는 주어지지 않습니다.3. 해결 방법알고리즘 분류: 구현, 문자열 처리고유 키 생성:각 단어를 고유 키로 변환하기 위해 첫 글자, 마지막 글자, 길이, 정렬된 내부 글자를 조합합니다.예: bacde → b|e|5|abcde.원본 단어 저장:입력받은 원본 단어를 키-값 쌍으로..

[Typescript] 백준 27535번 제주 초콜릿 지키기
알고리즘 2025. 1. 5. 22:55

문제 설명선생님이 초콜릿을 냉장고에 숨겨두었지만, 학생들이 초콜릿을 몰래 먹고 있습니다. 이를 방지하기 위해, 남은 초콜릿의 개수를 특정 규칙에 따라 포스트잇에 기록하려고 합니다. 초콜릿은 **한라봉(H), 감귤(T), 백년초(C), 키위(K), 녹차(G)**의 5가지 종류로 구성되어 있으며, 남은 초콜릿의 총합과 종류별 남은 개수를 다음 규칙에 따라 기록합니다:첫 번째 줄:남은 초콜릿의 총 개수를 기록합니다.이전 총합의 일의 자리 값을 진법으로 사용하여 숫자를 변환합니다.일의 자리가 0 또는 1이면 10진법을 사용합니다.변환된 숫자 뒤에 7H를 붙입니다.두 번째 줄:남아있는 초콜릿 개수가 많은 순서대로 초콜릿 종류를 공백 없이 나열합니다.남은 개수가 같다면, 알파벳 순서로 정렬합니다.남은 초콜릿이 없으..

[Javascript] 프로그래머스 - 예산
알고리즘 2025. 1. 4. 14:47

문제 설명회사에서 여러 부서가 지원을 요청하며, 총 예산을 초과하지 않는 범위에서 최대한 많은 부서의 요청을 승인하려고 합니다.각 부서의 지원 요청 금액이 담긴 배열 d와 총 예산 budget이 주어질 때, 예산 내에서 지원할 수 있는 최대 부서의 수를 구하는 문제입니다.제한 조건d의 길이: 1 이상 100 이하각 부서의 지원 요청 금액: 1 이상 100,000 이하총 예산 budget: 1 이상 10,000,000 이하해결 방법알고리즘: 그리디 (Greedy)문제의 핵심예산을 최대한 많은 부서에 나누어주려면, 작은 금액부터 순차적으로 처리해야 합니다.이를 위해, 부서 요청 금액을 오름차순 정렬합니다.구현 방식배열 d를 오름차순으로 정렬합니다.요청 금액을 하나씩 누적하여 합산합니다.합이 총 예산 budg..

[Javascript] 프로그래머스 - 영어 끝말잇기
알고리즘 2025. 1. 4. 14:30

문제 설명n명의 사람이 영어 끝말잇기를 진행하고 있습니다. 규칙은 다음과 같습니다:1번부터 순서대로 단어를 말합니다. 마지막 사람이 단어를 말하면 다시 1번으로 돌아옵니다.앞 사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.이미 말한 단어는 사용할 수 없습니다.한 글자 단어는 사용할 수 없습니다.탈락 조건:앞사람이 말한 단어의 마지막 문자로 시작하지 않는 단어를 말한 경우.이전에 사용된 단어를 다시 말한 경우.탈락자가 생긴다면, 해당 사람의 번호와 몇 번째 차례에 탈락했는지를 [번호, 차례] 형태로 반환합니다. 탈락자가 없다면 [0, 0]을 반환합니다.제한 조건n: 2 ≤ n ≤ 10words.length: n ≤ words.length ≤ 100각 단어의 길이: 2 ≤ 단어의 길이 ≤ ..

[Javascript] 프로그래머스 - 점프와 순간 이동
알고리즘 2025. 1. 4. 14:18

문제 설명OO 연구소의 아이언 슈트는 다음과 같은 두 가지 이동 방식을 지원합니다:K 칸 점프: 건전지를 K만큼 사용합니다.순간 이동: 현재 위치의 거리 x 2에 해당하는 위치로 이동하며, 건전지 사용량은 소모되지 않습니다.구매자는 특정 거리 N만큼 떨어져 있는 목적지로 이동하려고 하며, 건전지 사용량을 최소화해야 합니다.이때 건전지 사용량의 최솟값을 구하는 함수를 작성하세요.제한 조건N: 1 이상 10억 이하의 자연수K: 1 이상의 자연수해결 방법알고리즘: 비트마스킹 (Bit Manipulation)문제의 본질순간 이동은 건전지를 소모하지 않으므로 최대한 많이 사용해야 합니다.점프는 1칸씩 수행하며 건전지를 소모합니다.효율적 접근N을 이진법으로 표현했을 때, 1의 개수가 최소 점프 횟수와 동일합니다.순..

[Javascript] 프로그래머스 - 피보나치 수
알고리즘 2025. 1. 4. 13:37

문제 설명n번째 피보나치 수를 구하는 문제입니다. 피보나치 수열은 다음과 같이 정의됩니다:F(1) = 1, F(2) = 1F(n) = F(n-1) + F(n-2) (n ≥ 3)n번째 피보나치 수를 1,234,567로 나눈 나머지를 반환하는 함수를 작성하세요.제한 조건n은 2 이상 1,000,000 이하입니다.해결 방법알고리즘: 동적 계획법 (Dynamic Programming, DP)문자열 분리 및 변환피보나치 수열의 정의에 따라 이전 두 값만 알면 다음 값을 계산할 수 있습니다.따라서 배열을 사용하지 않고 두 개의 변수로만 값을 저장합니다.최소값과 최대값 탐색반복문을 통해 F(n)를 계산하며, 이전 두 값만 업데이트합니다.1,234,567로 나눈 나머지를 매 연산마다 구하여 큰 수 문제를 방지합니다.결..

검색 태그