728x90
반응형

분류 전체보기 195

[PCCP Java Stack] 주식가격

📈 프로그래머스 PCCP - 주식가격 Java 풀이 (스택 방식 시간순 해설 포함)문제 링크: 프로그래머스 - 주식가격🧾 문제 설명초 단위로 기록된 주식 가격이 담긴 배열 prices가 주어집니다.각 시점에서 가격이 떨어지지 않은 시간(초) 을 계산해 int[]로 반환하세요.🎯 입력/출력 예pricesreturn[1, 2, 3, 2, 3][4, 3, 1, 1, 0]🔍 설명1초 시점의 1원은 끝까지 떨어지지 않음 → 4초간 유지 → 42초 시점의 2원은 끝까지 떨어지지 않음 → 33초 시점의 3원은 다음 초에 떨어짐 → 14초 시점의 2원은 1초 유지 → 15초 시점의 3원은 마지막이므로 0초 유지 → 0🚫 완전탐색 방식 (비효율)public int[] solution(int[] prices) {..

PCCP/스택 2025.07.20

[프로그래머스 JAVA] 최대공약수와 최소공배수

문제 링크 👉 https://school.programmers.co.kr/learn/courses/30/lessons/12940✍ 문제 설명두 개의 자연수 n, m이 주어졌을 때,최대공약수(GCD, Greatest Common Divisor)최소공배수(LCM, Least Common Multiple)를 배열에 담아 [GCD, LCM] 형태로 반환하는 solution() 함수를 작성하는 문제입니다.예를 들어,입력값 n = 3, m = 12가 주어졌을 때,최대공약수는 3,최소공배수는 12이므로 [3, 12]를 반환해야 합니다.✅ 제한 조건1 ≤ n, m ≤ 1,000,000시간복잡도를 고려한 효율적인 구현이 요구됨💡 핵심 개념이 문제를 풀기 위해 알아야 할 수학 공식은 아래와 같습니다.최대공약수 (GCD..

[프로그래머스 JAVA] 징검다리 건너기

🔗 문제 링크 바로가기📌 문제 개요디딤돌이 일렬로 놓여 있는 개울을 친구들이 하나씩 건너가려 합니다.각 디딤돌에는 숫자가 쓰여 있고, 누군가 밟을 때마다 그 숫자는 1씩 줄어듭니다.숫자가 0이 되면 그 디딤돌은 밟을 수 없으며, 최대 k칸까지 점프할 수 있습니다.목표: 최대 몇 명까지 무사히 징검다리를 건널 수 있는지를 구하라.✅ 입력 조건stones: 각 디딤돌의 최대 하중 수치 배열 (1 이상 200,000개)k: 건너뛸 수 있는 최대 칸수 (1 이상 stones.length 이하)💡 문제 핵심 아이디어특정 인원 수 n명이 건널 수 있다고 가정했을 때,디딤돌을 밟을 때마다 1씩 감소되므로 stone[i] - n 인 지점은 밟을 수 없다.이처럼 밟을 수 없는 디딤돌이 연속으로 k개 이상 나오면 →..

[프로그래머스 JAVA] 순위 검색

🔗 문제 링크 바로가기✅ 문제 요약지원자의 조건 정보 (info)와 조건 질의 (query)가 주어졌을 때, 조건을 만족하면서 코딩테스트 점수가 특정 기준 이상인 지원자 수를 빠르게 찾아야 합니다.각 지원자는 아래 4가지 조건을 가집니다:개발 언어: cpp, java, python직군: backend, frontend경력: junior, senior소울푸드: chicken, pizza질의에는 -로 와일드카드 처리도 가능합니다.🎯 핵심 풀이 전략모든 조건 조합을 미리 생성 (DFS 사용)각 info 데이터에서 4개의 조건을 바탕으로 총 2⁴ = 16가지 조합의 키를 만들어 HashMap에 저장각 조건 조합의 점수 리스트를 정렬이진 탐색을 활용하기 위함쿼리마다 키를 생성하고 이진 탐색으로 개수 계산💡 ..

[프로그래머스 JAVA] 소수 찾기

🔗 문제 링크👉 프로그래머스 소수 찾기 문제 바로가기✅ 문제 설명숫자들이 적힌 종이 조각이 흩어져 있음이 조각들을 이어붙여 만들 수 있는 모든 수 중 소수의 개수를 구하라단, 같은 숫자 조각을 한 번씩만 사용 가능조합된 수는 중복 없이 처리해야 함예시입력만들 수 있는 소수출력"17"7, 17, 713"011"11, 1012🔧 문제 접근 방법모든 자리 수 조합을 백트래킹(순열)으로 생성조합한 문자열을 숫자로 바꾸어 HashSet에 저장 (중복 제거)저장된 수들 중 소수를 판별하여 카운트💡 핵심 포인트포인트설명✅ 순열(백트래킹)자릿수 상관없이 가능한 모든 숫자 생성✅ 중복 제거HashSet로 조합된 숫자 중복 방지✅ 소수 판별2 이상 수에 대해 √n까지 나눠보는 방식 사용🧪 코드 (Java)impo..

[프로그래머스 JAVA] 베스트앨범

📌 문제 링크: 프로그래머스 - 베스트 앨범🧩 문제 요약스트리밍 사이트에서 장르별로 인기 있는 노래를 모아 베스트 앨범을 출시하려 합니다.조건은 다음과 같습니다:장르별 총 재생 수가 많은 순서대로 앨범에 수록각 장르 안에서는 재생 수가 높은 곡부터, 같은 재생 수일 경우 고유 번호가 낮은 곡부터 수록장르당 최대 2곡까지 수록🛠️ 접근 방식1. 정보 정리용 Map 2개 생성gubnMap: 장르별 총 재생 수 저장 (Map)playMap: 장르별 곡 리스트 저장 (Map> → [재생 수, 고유번호])2. 정렬 기준장르 정렬: 총 재생 수 기준 내림차순곡 정렬: 재생 수 기준 내림차순, 같은 경우 고유 번호 기준 오름차순✅ 코드import java.util.*;class Solution { publ..

[프로그래머스 JAVA] 모의고사

문제 링크✅ 문제 설명세 명의 수포자가 각각 정해진 방식으로 모의고사 문제를 찍습니다.수포자 1: 1, 2, 3, 4, 5 반복수포자 2: 2, 1, 2, 3, 2, 4, 2, 5 반복수포자 3: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 반복실제 정답 배열 answers가 주어질 때, 누가 가장 많이 맞혔는지를 판단하고, 1번부터 3번까지의 수포자 중 가장 높은 점수를 받은 사람의 번호를 오름차순 배열로 반환해야 합니다.🔍 핵심 아이디어수포자마다 찍는 패턴이 반복되므로 % 연산자를 통해 정답과 비교합니다.세 명의 점수를 각각 누적해 저장합니다.최고 점수를 가진 수포자들을 모두 추려내 오름차순 정렬합니다.✅ 코드import java.util.*;class Solution { public ..

[프로그래머스 JAVA] 이진 변환 반복하기

📌 문제: 이진 변환 반복하기 - 프로그래머스🔍 문제 핵심 요약0과 1로 이루어진 문자열 s가 주어질 때, 다음 과정을 반복하여 s가 "1"이 될 때까지 몇 번의 이진 변환을 거쳤는지와 이 과정에서 총 몇 개의 0이 제거되었는지를 구하는 문제입니다.✅ 이진 변환 과정:문자열에서 모든 '0' 제거남은 문자열 길이를 이진수로 변환변환된 문자열을 다음 s로 설정⚠️ 주의할 점변환 대상 문자열의 길이는 최대 150,000이므로 문자열 처리 성능이 중요합니다.replace("0", "")로 '0' 제거 시 원래 길이와 비교해 몇 개의 '0'이 제거되었는지 계산합니다.이진수 변환은 Integer.toString(길이, 2)로 처리하면 간단합니다.🔧 자바 코드 with 주석class Solution { p..

[프로그래머스 JAVA] 3진법 뒤집기

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/68935📌 문제 요약자연수 n이 주어졌을 때,이를 3진법 문자열로 변환하고,해당 문자열을 뒤집은 후,다시 10진법 정수로 변환한 결과를 반환해야 합니다.예시:n (10진수)3진법 변환뒤집은 3진법결과 (10진수)451200002171251112222111229💻 전체 코드class Solution { public int solution(int n) { String ternary = Integer.toString(n, 3); // 1. 3진법 변환 String reversed = new StringBuilder(ternary).r..

[프로그래머스 JAVA] 문자열 압축

문제 링크 🔗✅ 1. 문제 핵심 요약문자열을 일정 길이로 잘라서, 같은 문자열이 반복되면 개수와 함께 압축하는 방식으로 가장 짧은 압축 문자열 길이를 구하는 문제입니다.핵심 포인트는 **"1개 이상 단위로 잘라서 압축"**할 수 있다는 점이며, 모든 단위의 길이를 고려하여 가장 짧은 경우를 찾아야 합니다.⚠ 2. 주의 사항문자열은 반드시 앞에서부터 순차적으로 잘라야 하며, 중간에서 임의 분할은 허용되지 않습니다.압축 단위 길이는 1부터 s.length() / 2까지만 시도하면 충분합니다.반복 횟수 1은 생략합니다. 즉, "1a"가 아닌 "a"로 표현됩니다.남는 문자열은 압축하지 않고 결과에 그대로 붙입니다.🔄 3. 알고리즘 로직 (슈도코드)min_length = 문자열 길이for 압축 단위 from ..

728x90
반응형