Coding Problem 11

[프로그래머스] 등굣길

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42898 예시 코드function solution(m, n, puddles) { const board = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0)); for (let i = 0; i Array(n + 1).fill(0)); dp[0][1] = 1; const MOD = 1000000007; const PUDDLE = 1; for (let i = 1; i  풀이목적지까지 도달할 수 있는 최단 경로의 수를 구하는 문제입니다.2차원 좌표 위를 움직이고, 이동 방향이 오른쪽 또는 아래로 한정되어 있어 DP를 사용할 수 있습니다. ..

Coding Problem 2024.11.12

[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 다단계 칫솔 판매

문제 https://school.programmers.co.kr/learn/courses/30/lessons/77486 예시 코드class Member { #name; #referral; #earning; constructor(name, referral) { this.#name = name; this.#referral = referral; this.#earning = 0; } getName() { return this.#name; } getReferral() { return this.#referral; } getEarning() { return this.#earning; } updateEarning(earning) { this.#earning +..

Coding Problem 2024.11.10

[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 징검다리 건너기

문제  https://school.programmers.co.kr/learn/courses/30/lessons/64062 풀이 첫 번째 시도단순히 건넌 사람의 수를 0부터 시작해서 징검다리를 순회하며 무사히 건널 수 있으면 카운트를 하나씩 증가시켰고, 이를 실패할 때까지 반복했습니다.그러나 일부 테스트케이스에서 시간초과로 실패했습니다.function solution(stones, k) { let answer = 0; while(true) { let pos = 0; let jump = 0; while(pos k) return answer; if(stones[pos] > 0) jump = 0; stones..

Coding Problem 2024.11.08

[프로그래머스] 다음 큰 숫자

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12911 예시 코드 def solution(n): x = n # 1. 가장 낮은 '1'비트 찾기 right_one = x & -x # 2. 가장 낮은 '1'비트에 1 더하기 added_one_bit = x + right_one # 3. 변경된 비트 패턴 찾기 modified_pattern = x ^ added_one_bit # 4. 변경된 비트 패턴 조정하기 # 4-1. 오른쪽 끝으로 시프트하기 adjusted_pattern = (modified_pattern) // right_one # 4-2. 오른쪽으로 2비트 시프트하기 adjusted_pattern >>= 2 # 5. 최종 결과 구하기 n..

Coding Problem 2024.03.20

BOJ 14426 접두사 찾기

문제 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 예시 코드 class TrieNode { constructor() { this.children = {}; this.isTerminal = false; } } class Trie { constructor() { this.root = new TrieNode(); } insert(key) { let node = this.root; for (let i = 0; i < key.len..

BOJ 5582 공통 부분 문자열

문제 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 예시 코드 function solution() { const str1 = input(); const str2 = input(); const len1 = str1.length; const len2 = str2.length; const dp = Array.from(Array(len1 + 1), () => Array(len2 + 1).fill(0)); let maxLen = 0; for (let i = 1; i

Coding Problem/DP 2023.12.13

BOJ 1700 멀티탭 스케줄링

문제 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 예시 코드 function solution() { const [N, K] = input().split(" ").map(Number); const order = input().split(" ").map(Number); const plugs = new Map(); let cnt = 0; for (let i = 0; i < K; i++) { if (plugs.has(order[i])) continue; if (plugs.size < N) { plugs.set(o..

BOJ 12904 A와 B

문제 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 예시 코드 function solution() { const S = input(); let T = input().split(""); while (S.length !== T.length) { if (T.at(-1) === "A") T = T.slice(0, -1); else if (T.at(-1) === "B") T = T.slice(0, -1).reverse(); else break; } return S === T.joi..