본문 바로가기

전체보기198

[프로그래머스] 양궁대회 문제 개요카카오배 양궁대회 결승전에서 라이언이 어피치를 가장 큰 점수 차이로 이기기 위한 화살 배분을 구하는 문제입니다.핵심 규칙어피치가 먼저 n발을 쏜 후 라이언이 n발을 쏜다각 점수대에서 더 많은 화살을 맞힌 선수가 해당 점수를 가져간다동점일 경우 어피치가 점수를 가져간다둘 다 0발일 경우 아무도 점수를 가져가지 않는다최종 점수가 같을 경우 어피치가 우승한다우선순위 규칙같은 점수 차이로 이기는 방법이 여러 개일 경우, 가장 낮은 점수를 더 많이 맞힌 경우를 선택해야 합니다.접근 방법1단계: 문제 분석먼저 문제의 핵심을 파악했습니다:라이언이 이겨야 한다 (라이언 점수 > 어피치 점수)가장 큰 점수 차이로 이겨야 한다같은 점수 차이일 때는 낮은 점수부터 비교한다2단계: 점수 계산 로직 구현function.. 2025. 10. 6.
[프로그래머스] 메뉴 리뉴얼 메뉴 조합 문제 해결기 - 문자열 정렬의 중요성오늘 코딩테스트에서 메뉴 조합 문제를 만났는데, 처음엔 간단해 보였지만 실제로는 문자열 정렬이라는 중요한 포인트를 놓쳐서 한참을 헤맸다. 문제 해결 과정을 정리해보자.문제 이해orders 배열과 course 배열이 주어진다. orders의 각 문자열에서 가능한 모든 조합을 만들고, course에 지정된 길이별로 가장 많이 주문된 조합을 찾는 문제다.예시:orders: ["XYZ", "XWY", "WXA"]course: [2, 3, 4]기댓값: ["WX", "XY"]첫 번째 시도 - 기본 조합 생성처음엔 단순하게 각 문자열에서 조합을 생성하는 방식으로 접근했다.function solution(orders, course) { function findCnt(ar.. 2025. 10. 5.
[프로그래머스] 삼각 달팽이 삼각형 나선형 채우기 문제 해결기오늘 코딩테스트에서 재미있는 문제를 만났다. 삼각형 모양으로 숫자를 나선형으로 채우는 문제였는데, 처음엔 좀 헷갈렸지만 차근차근 접근해보니 해결할 수 있었다.문제 이해n을 입력받아서 1부터 maxN(삼각형의 총 숫자 개수)까지의 숫자를 삼각형의 왼쪽 면을 기준으로 시작해서 아래→오른쪽→위 방향으로 나선형으로 채우는 문제다.예를 들어 n=4라면: 1 2 9 3 10 8 4 5 6 7이런 식으로 채워지고, 결과는 [1,2,9,3,10,8,4,5,6,7]이 되어야 한다.접근 방법처음엔 어떻게 접근해야 할지 막막했다. 삼각형을 어떻게 표현할지, 나선형 이동을 어떻게 구현할지 고민이 많았다.1단계: 삼각형 구조 설계삼각형을 2차원 배열로 표현하기로 했다. 각 행의 길이는.. 2025. 10. 5.
[프로그래머스] 외벽 점검 원형 제방 점검 문제 해결 방법문제 이해n: 원의 둘레 길이weak: 터치포인트 배열 (예: [1,5,6,7])dist: 각 친구의 최대 이동거리 배열해결 접근법1. 구간 생성weak 포인트들을 기반으로 두 가지 구간을 만듭니다:예시: weak = [1,5,6,7]연속 구간: [1~5, 5~6, 6~7] → 거리: [4, 1, 1]원형 구간: [7~n, n~1, 1~5, 5~6] → 거리: [n-7, 1, 4, 1]2. 구간별 거리 계산// 연속 구간 거리const continuousDistances = [4, 1, 1];// 원형 구간 거리 const circularDistances = [n-7, 1, 4, 1];3. dist 사용 전략각 구간에서:구간 내 거리 합을 계산가장 큰 dist부터 사용하여.. 2025. 10. 4.
[프로그래머스] 매칭 점수 페이지 랭킹 알고리즘 구현 과정 블로그문제 이해웹 페이지의 검색 순위를 결정하는 알고리즘을 구현해야 합니다. 각 페이지는 기본 점수와 링크 점수를 가지며, 최종 점수가 가장 높은 페이지의 인덱스를 반환해야 합니다.1단계: 기본 점수 계산 함수 구현function parsingKeyword(str, parseStr) { // 알파벳이 아닌 문자를 구분자로 사용해서 문자열을 분리 const words = str.split(/[^a-zA-Z]/).filter((word) => word.length > 0); let count = 0; // 각 단어가 파싱 문자열과 정확히 일치하는지 확인 (대소문자 구분 안함) for (let word of words) { if (word.toLowerCase().. 2025. 10. 4.
[프로그래머스] 괄호 변환 문제 설명균형잡힌 괄호 문자열을 올바른 괄호 문자열로 변환하는 문제를 풀어보자.알고리즘 규칙:입력이 빈 문자열인 경우, 빈 문자열을 반환문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리 (u는 더 이상 분리할 수 없고, v는 빈 문자열 가능)u가 "올바른 괄호 문자열"이면 v에 대해 재귀 수행 후 u와 연결u가 올바르지 않으면 특정 변환 과정 수행핵심 개념 이해균형잡힌 vs 올바른 괄호 문자열균형잡힌: '('와 ')'의 개수가 같음올바른: 균형잡힌 + 괄호가 올바른 순서로 매칭됨분리 알고리즘의 핵심문제에서 가장 헷갈리는 부분은 "더 이상 분리할 수 없는 균형잡힌 괄호 문자열"이다.쉽게 말해 괄호 쌍이 맞아떨어지는 첫 번째 순서를 말한다. 괄호쌍이 맞아떨어지는 게 계속 이어붙는다면 결국 더 분리가 .. 2025. 10. 3.