Problem Solving30 [Java] 프로그래머스 - 완주하지 못한 선수 참가자 명단과 완주자 명단이 주어질 때, 동명이인까지 고려해서 완주하지 못한 선수 1명을 찾는 문제. 1. 문제 유형해시, 문자열, 구현 2. 내가 놓친 포인트처음 떠올린 접근 : 참가자와 완주자 배열을 정렬한 뒤, 서로 비교해서 다른 이름을 찾으려고 했다. 오답 원인: 이렇게 해도 풀 수는 있지만 시간복잡도 상으로 좋은 코드는 아니었다. 3. 핵심 로직 & 해결 방법핵심 조건: 참가자 중에는 동명이인이 있을 수 있다. 따라서 이름 -> 개수 형태로 관리해야 한다. 풀이 아이디어:HashMap를 만든다.participant를 순회하면서 이름이 나올 때마다 개수를 1씩 증가시킨다.completion을 순회하면서 이름이 나올 때마다 개수를 1씩 감소시킨다.마지막에 map을 순회해서 값이 0이 아닌 이름을 찾.. 2026. 3. 31. [Java] 프로그래머스 - 주식가격 각 시점의 가격이 처음으로 떨어질 때까지 걸린 시간을 구하는 문제. 1. 문제 유형스택, 배열, 구현 2. 내가 놓친 포인트처음 떠올린 접근 : 현재 가격과 바로 직전 가격만 비교하면서, 가격이 떨어지면 스택에서 하나 꺼내 처리하려고 했다. 오답 원인: 이 문제는 가격값 자체보다 각 시점(인덱스) 기준으로 답을 구해야 하는데, 처음엔 값 중심으로 생각했다. 또한 현재 가격이 들어왔을 때 이전 시점 하나만 처리하는 걸로 생각했는데 실제로는 여러 인덱스가 연속으로 답이 확정될 수 있다. 마지막까지 스택에 남아 있는 인덱스들은 끝까지 가격이 떨어지지 않은 경우라는 점도 처음엔 헷갈렸다. 3. 핵심 로직 & 해결 방법핵심 조건: 스택에는 가격이 아니라 인덱스를 저장한다. 풀이 아이디어:배열을 왼쪽부터 순회하면.. 2026. 3. 30. [Java] 프로그래머스 - 다리를 지나는 트럭 다리 길이와 무게 제한이 있을 때, 트럭들이 순서대로 다리를 모두 건너는 최소 시간을 구하는 문제 1. 문제 유형큐, 덱/데크 , 시뮬레이션, 구현 2. 내가 놓친 포인트처음 떠올린 접근 : 다리 길이만큼 배열을 만들고, 1초마다 배열 안의 값을 뒤로 한 칸씩 밀면서 트럭을 이동시키는 방식으로 생각했다. 그리고 배열 안의 값들의 합 + 새로 올릴 트럭 무게가 다리의 버틸 수 있는 무게 이하라면 트럭을 넣고, 아니면 못 넣게 하면 된다고 생각했다. 오답 원인: 아이디어 자체는 크게 틀리지 않았지만 매 초마다 배열 전체를 뒤로 미는 방식은 비효율적일 수 있다.특히 다리 길이와 트럭 수가 최대 10,000까지 가능하므로 단순 배열 이동 방식은 시간복잡도 면에서 부담이 커질 수 있다.또한 “다리 위 상태를 관리.. 2026. 3. 27. [Java] 프로그래머스 - 프로세스 대기 큐에서 프로세스를 하나씩 꺼내서 더 높은 우선순위가 뒤에 있으면 다시 뒤로 보내고,없으면 실행할 때 내가 찾는 프로세스가 몇 번째로 실행되는지 구하는 문제. 1. 문제 유형큐, 구현, 시뮬레이션 2. 내가 놓친 포인트처음 떠올린 접근 : 맨 앞 값을 꺼낸 뒤에 배열을 순회하면서 더 큰 값이 있으면 그 값으로 넘어가고, 실행한 값은 0으로 바꾸는 식으로 생각했다. 오답 원인: 이 문제는 단순히 큰 값을 찾는 문제가 아니라 큐의 순서를 그대로 시뮬레이션해야 하는 문제였다.또한 처음 location 위치에 있던 프로세스 자체를 끝까지 추적해야 했다.queue의 사용법과 queue가 가능하다는 사실을 몰랐기 때문에 푸는게 오랜 시간이 걸렸다. 3. 핵심 로직 & 해결 방법핵심 조건: 현재 맨 앞 프로세스보.. 2026. 3. 25. [Java] 프로그래머스 - 올바른 괄호 닫는 괄호가 먼저 나오지 않는지 순회 중간에도 확인해야 하는 문제 1. 문제 유형스택(Stack), 문자열, 구현 2. 내가 놓친 포인트 처음 떠올린 접근 : 여는 괄호 (는 더하고 닫는 괄호 )는 빼서 마지막 결과만 0이면 올바른 괄호라고 생각했다.오답 원인: 최종 개수보다 중간 순서가 올바른지를 먼저 봐야 했다. 예를 들어 )( 는 최종 합만 보면 0이지만 닫는 괄호가 먼저 나왔으므로 올바른 괄호가 아니다. 3. 핵심 로직 & 해결 방법핵심 조건: 짝이 없는 닫는 괄호가 먼저 나오거나, 순회를 마쳤는데도 여는 괄호가 남아있으면 실패풀이 아이디어(Stack 사용):( 이면 Stack에 push 한다.) 이면 Stack에서 pop 한다. 단, 스택이 비어있다면 즉시 false 반환문자열 끝까지 순회한 .. 2026. 3. 24. [Java] 프로그래머스 - 옷가게 할인 받기 1. 문제 설명특정 금액 이상 구매 시 차등 할인 적용 (5%, 10%, 20%)소수점 이하를 버린 정수(int)를 반환해야 함. 2. Trouble Shootinganswer = price * 0.95;위와 같이 작성했을 때 컴파일 에러가 발생했다.Java에서 실수를 곱하는 순간 결과값은 기본적으로 double 타입이 되기 때문이다. 3. 해결 방법answer = (int)(price * 0.8);계산된 전체 결과값에 (int)를 붙여 강제로 소수점을 떼어내고 정수로 변환했다.이를 명시적 형변환이라고 한다. 4. 최종 코드class Solution { public int solution(int price) { int answer = 0; if(price >= 100000 .. 2026. 2. 9. 이전 1 2 3 4 5 다음