728x90
반응형

분류 전체보기 197

[PCCP JAVA] 땅따먹기

문제 링크 👉 https://school.programmers.co.kr/learn/courses/30/lessons/12913📌 문제 설명땅따먹기 게임 규칙땅은 N행 × 4열각 칸에 점수가 적혀 있음1행에서 시작하여 한 행씩 내려오며 한 칸만 선택같은 열을 연속해서 밟을 수 없음마지막 행까지 내려왔을 때 얻을 수 있는 점수의 최댓값을 구해야 함예시:[ [1, 2, 3, 5], [5, 6, 7, 8], [4, 3, 2, 1] ]가능한 최적 경로: (5) → (7) → (4)총점: 16❌ 잘못된 접근 — BFS/DFS 완전탐색처음에 많이 하는 실수는 모든 경로를 전부 탐색하는 방법입니다.각 행에서 최대 4가지 선택경로 수 = 4^N → N이 커지면 (최대 100,000) 시간/메모리 폭발따라서 완전..

[PCCP Java] [1차] 뉴스 클러스터링

📎 문제 링크: 프로그래머스 뉴스 클러스터링✅ 문제 핵심 요약두 문자열을 두 글자씩 끊어 다중집합으로 구성영문자가 아닌 쌍은 제외대소문자 구분 없음두 다중집합 간의 자카드 유사도 계산자카드 유사도 J(A, B) = |A ∩ B| / |A ∪ B|단, 두 집합이 모두 공집합이면 유사도는 1최종 출력: 자카드 유사도 * 65536 → 소수점 버리고 정수 리턴✅ 문제 접근 방식문자열을 소문자로 변환하고, 두 글자씩 끊어 유효한 쌍을 추출추출된 쌍으로 다중집합을 구성 (HashMap 사용)교집합은 min(map1[i], map2[i]), 합집합은 max(map1[i], map2[i])로 계산유사도 계산 후 65536을 곱하여 정수로 반환✅ Java 풀이 코드import java.util.*;class Solu..

[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..

728x90
반응형