문제 98

[프로그래머스] 보석 쇼핑 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요어피치가 보석 매장에서 모든 종류의 보석을 적어도 하나씩 포함하는 가장 짧은 구간을 찾으려 한다. 진열대 번호 순서대로 주어진 보석 배열에서 이러한 구간의 시작과 끝 번호를 반환하는 문제이다.접근 방법보석 종류 개수 파악:주어진 gems 배열에서 HashSet을 사용해 보석의 고유한 종류 개수를 구한다. 이를 기준으로 구간 내에서 모든 보석 종류를 포함했는지 판단한다.투 포인터 알고리즘 활용:start와 end 포인터를 사용해 현..

[프로그래머스] 불량 사용자 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/64064  문제 개요이벤트 응모자 중 특정 패턴과 일치하는 아이디를 불량 사용자로 제재하려고 한다. 응모자 아이디와 불량 사용자 패턴이 주어질 때, 불량 사용자 패턴에 따라 제재될 수 있는 응모자 아이디 목록의 가능한 경우의 수를 구하는 문제이다. 제재 아이디 목록의 순서는 상관없으며, 동일한 내용을 가진 경우는 하나로 간주한다. 접근 방법불량 사용자 패턴 변환:주어진 불량 사용자 패턴(banned_id)의 * 문자를 정규 표현식의 와일드카드인 .으로 변환하여 매칭 가능한 형태로 변경한다.더보기이유 및 필요성1. *는 정규 표현식의 문자가 아님문제에서 주어진 banned_id에는 *가 포함되어 있..

[프로그래머스] 단속카메라 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요고속도로를 이동하는 차량들의 경로가 주어질 때, 모든 차량이 단속 카메라를 한 번 이상 만나도록 카메라를 설치하려 한다. 차량의 진입 지점과 진출 지점을 기준으로 최소한의 카메라를 설치하는 문제이다.접근 방법차량의 진출 지점을 기준으로 오름차순 정렬:모든 차량이 카메라를 만나기 위해 가장 빨리 고속도로를 떠나는 차량의 진출 지점에 카메라를 설치한다는 전략을 세운다. 이를 위해 Arrays.sort를 사용하여 routes 배열을 진..

[프로그래머스] 최고의 집합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12938# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요주어진 자연수의 개수 n과 합 s를 만족하는 집합 중, 각 원소의 곱이 최대가 되는 집합을 구하는 문제입니다. 만약 해당 조건을 만족하는 집합이 없다면 [−1]을 반환합니다. 접근 방법조건 확인n>s인 경우, 합 s를 만들 수 없으므로 [−1]을 반환합니다.최적의 분배 계산합 s를 n개의 원소로 최대한 고르게 나누는 것이 곱을 최대화하는 방법입니다.각 원소에  s/n을 할당합니다.s%n의 나머지 값은 각 원소에 하나씩 분배하여 ..

[프로그래머스] 정수 삼각형 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요주어진 삼각형 구조에서 꼭대기에서 시작하여 대각선 아래 방향으로 이동하며 숫자의 합을 최대화하는 경로를 찾는 문제입니다. 각 위치에서는 바로 아래칸의 두 개의 숫자 중 하나로만 이동할 수 있습니다. 접근 방법역방향 동적 프로그래밍(DP)삼각형의 아래쪽에서부터 위쪽으로 값을 갱신하며 최대값을 계산합니다.각 칸에서 가질 수 있는 최대값을 그 칸의 값과 아래층 두 칸의 최대값 중 더 큰 값을 더하여 구합니다.구체적인 동작삼각형의 가장 ..

[프로그래머스] 무인도 여행 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요무인도에서 상, 하, 좌, 우로 연결된 땅들을 하나의 섬으로 간주하며, 각 섬의 식량 값을 모두 더해 해당 섬에서 머무를 수 있는 최대 일 수를 계산하는 문제입니다. 지도를 나타내는 문자열 배열이 주어지고, 숫자는 섬의 땅을, 'X'는 바다를 나타냅니다. 여러 섬의 최대 머무를 수 있는 일수를 계산하여 오름차순으로 정렬하여 반환합니다. 섬이 없다면 -1을 반환합니다.접근 방법지도 초기화문자열 배열을 정수형 배열 map으로 변환하..

[프로그래머스] 미로 탈출 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요1 x 1 크기의 직사각형 미로에서 시작 지점에서 출발해 레버를 작동시킨 후 출구로 이동하여 탈출하는 데 걸리는 최소 시간을 구하는 문제입니다. 이동은 통로에서만 가능하며, 벽은 지나갈 수 없습니다. 레버를 작동시키기 전에도 출구를 지나갈 수는 있지만, 레버를 작동해야만 출구를 통해 탈출할 수 있습니다.접근 방법지도 구성: 주어진 문자열 배열을 2차원 배열로 변환하여 미로 지도를 만듭니다.BFS 탐색:시작점에서 레버 위치까지의 ..

[프로그래머스] [PCCP 기출문제] 4번 / 수레 움직이기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요이 문제는 n x m 크기의 격자 모양 퍼즐판에서 두 개의 수레(빨간색과 파란색)를 각각 자신의 도착 칸으로 이동시키는 퍼즐을 푸는 문제입니다. 수레들은 상하좌우로 한 칸씩 이동하며, 여러 제약 조건을 준수해야 합니다.수레는 벽이나 격자 판 밖으로 움직일 수 없습니다.수레는 자신이 방문했던 칸으로 움직일 수 없습니다.자신의 도착 칸에 위치한 수레는 움직이지 않습니다.계속 해당 칸에 고정해 놓아야 합니다. 동시에 두 수레를 같은 칸..

[프로그래머스] [PCCP 기출문제] 4번 / 수식 복원하기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340210 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요주어진 수식에서 2~9진법 중 하나를 사용하고 있다는 전제하에, 수식의 진법을 판단하고 지워진 결괏값(X)을 올바르게 채워넣는 문제입니다. 모든 수식은 덧셈(+) 또는 뺄셈(-) 연산으로 이루어져 있으며, 정확한 결과를 도출하거나 불확실할 경우 ?로 표기해야 합니다. 접근 방법진법 검증을 위한 데이터 구조 설정2진법부터 9진법까지의 유효성을 확인하기 위해, 각 진법에서 해당 수식이 성립하는 횟수를 기록하는 배열(base)을 선언합..

[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기도움말 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요동영상 재생기를 구현하는 문제로, 사용자가 입력한 명령에 따라 동영상의 재생 위치를 조정하는 기능을 제공합니다. 동영상의 길이, 현재 재생 위치, 오프닝 구간의 시작과 끝 시각이 주어지며, 사용자는 "prev"와 "next" 명령을 통해 재생 위치를 조정할 수 있습니다. 오프닝 구간에 있을 경우, 자동으로 오프닝이 끝나는 위치로 이동해야 합니다. 최종적으로 모든 명령이 수행된 후의 재생 위치를 "mm:ss" 형식으로 반환해야 합..