java34 [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] 좋은 객체 지향 설계의 5가지 원칙 (SOLID) 0. 나는 정말 알고 있었을까?그동안 인터페이스를 사용하고, 공부하면서 SOLID 라는 단어는 많이 들었다.강의를 들을 때는 이해한 것 같았지만, 막상 스스로에게 이렇게 질문해 보면 답이 막혔다. “그래서 SOLID가 왜 필요한 건데?” 이 글은 그 질문에 답하기 위해 정리한 기록이다.1. 내가 이해한 SOLID 1) SRP – 단일 책임 원칙 (Single Responsibility Principle) 처음에는 “클래스는 한 가지 일만 해야 한다”라고 이해했다. 지금 이해한 SRP는 이것이다. 클래스는 변경의 이유가 하나여야 한다. 예를 들어 MemberService가 회원 가입뿐 아니라 할인 정책 계산까지 담당한다고 가정해보자.회원 정책이 바뀌어도 수정할인 정책이 바뀌어도 수정이 순간 클래스는 .. 2026. 2. 11. 이전 1 2 3 4 5 6 다음