전체 글 69

[Javascript] 프로그래머스 - 모음 사전

🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드1. 문제 설명알파벳 모음 ('A', 'E', 'I', 'O', 'U') 만을 사용하여 만들 수 있는 길이 5 이하의 모든 단어 조합 중입력 문자열(word)은 몇 번 째 인덱스인지 리턴하는 문제이다. 입출력  제한 사항만들 수 있는 단어의 최대 길이는 5 이하이다. 👉 조합을 구현할 함수에서, 현재 단어의 길이가 5다. => 즉시 리턴해야함2. 문제 풀이1) 변수 선언index 변수는 조합을 만들어낼 때마다 1씩 증가를 시킬 예정이다. 2) 조합 함수조합 함수를 구현한다. ⭐ Key point이 때, 얼리 리턴 조건은 다음과 같은데,  1) 원하는 알파벳이 나왔을 경우 => 정답  2) 조합한 문자열이 5글자일 경우 => 제한 조건 (1  이 경우를..

Algorithm 2025.01.22

[Javascript] 소수 찾기

🧾 목차1. 문제 설명2. 문제 풀이3. 정답 코드1. 문제 설명나올 수 있는 모든 수의 조합을 구하여, 소수의 개수를 리턴하는 문제이다. 입출력 예제 제한사항- 1 - 중복 가능 (e.g. "011")2. 문제 풀이 가능한 모든 조합을 구하여, 소수인 경우에만 리스트에 넣어주면 된다. 1) 이 때, 만들 수 있는 소수 리스트는 중복을 배제해야한다.e.g. "001", "01" 은 모두 숫자 1로 해석된다는 의미  var primeNumbers = new Set(); // 만들 수 있는 모든 소수 리스트 (중복 x) var len = numbers.length; // 입력 문자열의 길이  2) 소수 판별 함수 구현- 수가 0 또는 1인 경우, 반드시 소수가 아님- 2부터 ~ 제곱근 까지 반복..

Algorithm 2025.01.21

[Javascript] 더 맵게

목차1. 문제 설명2. 문제 풀이3. 전체 코드1. 문제 설명모든 음식의 스코빌 지수를 K 이상으로 만드는 데 걸리는 횟수를 구하는 문제이다.K 이상으로 만들기 위해서, 연산을 해야하는데 그 연산은 다음과 같다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Key point제한 조건 : 2 가장 적은 두 개의 값을 계속 구해야하는데, 그때그때마다 새로운 적은 값을 구하기 위해서는 시간초과가 발생한다.👉 힙 알고리즘을 구현해내야한다. 2. 문제 풀이1) 기본 코드힙을 구현하기 위한 기본 구조는 다음과 같다.class MinHeap { constructor() { this.heap = []; // 힙 배열 } ..

Algorithm 2025.01.11

[Javascript] 가장 큰 수

목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명0 또는 양의 정수들을 집합이 주어졌을 때 그 수들을 붙여서 만들수 있는 가장 큰 수를 구하는 문제이다.입출력 예는 다음과 같다. 주의할 점numbers를 내림차순하여 이어붙인 것이 반드시 가장 큰 수는 아니다.만약, 2번째 예시를 내림차순 방식으로 답을 구한다면 → "9534303" 이다.하지만 가장 큰 수는 "9534330" 이므로, 다른 방식을 찾아야했다! 2. 문제 풀이만약 [3, 30] 이 주어진다면, 가장 큰 수는 "330" 이다.내림차순을 결정하는 수는 2개의 수를 더한 수이다. ( ≠ 각 수를 내림차순) (참고) 기본 sort 함수 사용법[1,2,3,4].sort((a, b)=> b - a); a는 뒷번호, b는 앞번호이다. b..

Algorithm 2025.01.11

[Javascript] 롤케이크 자르기

목차1. 문제 설명2. 문제 풀이3. 정답 코드 1. 문제 설명다음 문제는 롤케이크를 자르는 문제이다.롤케이크에는 토핑이 올라가 있으며, 토핑의 종류는 숫자로 표시된다. (ex. 1, 2, 3...)철수는 롤케이크를 2조각으로 나눠 동생과 나눠가져야하는데,공평하게 나누기 위하여 다음 조건을 만족해야한다.=> 토핑의 가지수가 동일해야 함 이 때, topping의 개수가 1,000,000로 매우 큰 숫자임을 주의해야한다.  2. 문제 풀이topping의 개수가 1,000,000로 매우 큰 숫자이므로, 롤케이크를 자르는 행위는 선형 탐색으로 해결해야한다는 것을 알았다. 변수각 조각이 가진 토핑들을 저장할 객체와 가짓 수를 카운트할 변수를 선언해야한다. 로직1. 초기 상태 : 모든 토핑을 오른쪽 조각에 우선 배..

Algorithm 2025.01.11

순열, 조합 문제 풀이 (with. Python)

목차1. 문제 이해하기2. 실전 팁3. itertools 라이브러리 사용4. 자주 나오는 예제1. 문제 이해하기모든 경우의 수를 구해야 한다면, 아래 조건들에 따라 분류합니다. "중복이 허용되는가?"허용된다면: 중복 순열, 중복 조합허용되지 않는다면: 순열, 조합"순서가 중요한가?"순서 중요: 순열, 중복 순열순서 중요하지 않음: 조합, 중복 조합"정렬 조건이 있는가?"오름차순 → 조합비내림차순 → 중복 조합"결과의 조건이 명시되어 있는가?"예를 들어, 총합 제한, 특정 숫자 포함 여부 등의 조건이 있을 수 있음.이 조건을 함수 호출 조건에 포함2. 실전 팁순열/조합 문제는 보통 백트래킹을 사용합니다.백트래킹에서 중요한 것은 1. 종료 조건2. 반복문 (n가지 중 1가지를 pick) ⭐ 추가적으로 결과 ..

Algorithm 2024.12.13

백준 21315. 카드 섞기

목차1. 문제2. 구현3. 개선한 코드2. 구현가능한 k 조합을 2번 반복하더라도 시간 내에 풀 수 있으므로, 모든 조합을 생각했습니다. 1. 카드 섞기 함수를 제외한 나머지 코드를 완성 - max_k 는 입력 카드 수 N 에 대해 나올 수 있는 최대 kimport sysfrom collections import dequeinput = sys.stdin.readlinen = int(input())finish_list = list(map(int, input().split()))start_list = [i for i in range(1, n+1)]# max_k 구하기max_k = 10for i in range(max_k, 0, -1): if 2 ** i  2. 관건은 카드를 섞는 로직인데, deque을..

Algorithm 2024.12.07

white-space: pre-line 스타일 추가로 줄바꿈 인식

백엔드에서 메시지를 전달받는 경우 엔터처리가 되지 않아서 프론트엔드에서 엔터처리를 해야 했습니다.느낌표(!)와 마침표(.)를 인식하여 줄바꿈 처리를 진행해보도록 합시다. 목차1. 정규식 적용2. white-space: pre-line3. 결과4. 추후 개선 방향 1. 정규식 적용message 에서 느낌표(!)와 마침표(.)를 찾고, 그 뒤의 공백을 찾고 줄바꿈(\n)으로 대체하는 코드입니다. const formattedMessage = message.replace(/([!.])\s*/g, "$1\n"); 2. white-space: pre-line줄바꿈이 삽입된다고 해서 바로 html에 적용되는 것은 아닙니다.white-space pre-line을 추가하여 줄바꿈 문자(\n)가 실제로 적용되게 했습니다...

코치코치 2024.11.30

코치 폴더 구조 리팩토링 (Feat. cursor ai)

코치코치가 드디어 완성되어 해커톤에서 상을 받게 되었습니다.대회는 마무리가 되었지만 코드의 품질을 더 높여보고자 클로드 AI를 사용해 리팩토링을 진행하였습니다.🧾 목차1. 폴더 구조의 문제점2. 해결 방법3. 과정에서의 클로드 문제점1. 폴더 구조의 문제점이전 코치 폴더의 문제점은 다음과 같습니다.1. 단일/다중 코치로 나눠지지 않았다.2. 기능별로 나눠지지 않았다.즉 코치 관련된 모든 파일이 하나의 coach 폴더에 있었습니다.2. 해결 방법클로드 AI를 이용하여 분리하였을 때 다음과 같이 추천을 받았습니다.src/components/coach/├── list/ # 코치 목록 관련│ ├── CoachList.tsx # 코치 목록 컨테이너│..

코치코치 2024.11.24

3계층형 시스템 아키텍처

흔히들 개발 시스템을 구성할 때 3계층형을 사용하게 됩니다. 프레젠테이션, 애플리케이션, 데이터 계층을 의미하는 데, 각각을 살펴보겠습니다. 🧾 목차1. 3계층 개념2. 정적 콘텐츠 Vs 동적 콘텐츠3. 그림으로 살펴보는 시스템 구성도 예제4. NGINX1. 3계층 개념 (3-tier)1-1. 프레젠테이션 계층- 사용자가 마주하는 UI를 제공- 정적 컨텐츠(Html, Css, Javascript)를 NGINX를 통해 제공 1-2. 애플리케이션 계층- 비지니스 로직 수행- 동적 컨텐츠를 제공- 자신이 계산할 수 있는지, 아니면 DB 접속이 필요한지를 판단하여 DB 서버로 요청 전달 1-3. 데이터 계층- 데이터베이스, 파일 저장소- 애플리케이션의 요청을 받아 데이터 입출력 수행 2. 정적 콘텐츠 Vs 동..

Server 2024.11.18
728x90