본문 바로가기

java34

[JAVA] 프로그래머스 - 기사단원의 무기 1부터 number까지 각 숫자의 약수 개수를 구하고, 제한 수치를 넘는 경우 지정된 공격력으로 대체하여 전체 철의 무게를 구하는 문제 1. 문제 유형수학, 구현 2. 내가 놓친 포인트처음 떠올린 접근 : 각 숫자마다 1부터 제곱근까지 반복하면서 약수를 찾고, 조건에 맞으면 결과값을 증가시키려고 했다. 오답 원인: limit을 약수의 개수 제한이 아니라 약수 값의 제한처럼 잘못 해석했다. 또한 제곱근까지만 반복할 때는 약수가 j 하나만 나오는 것이 아니라, 보통 j와 i / j가 한 쌍으로 나온다는 점을 놓쳤다.3. 핵심 로직 & 해결 방법핵심 조건: 각 기사 번호의 공격력은 해당 숫자의 약수 개수이다.단, 약수 개수가 limit보다 크면 실제 공격력 대신 power를 사용한다.풀이 아이디어:1번 기사부.. 2026. 4. 24.
[Java] 프로그래머스 - 로또의 최고 순위와 최저 순위 일부 번호를 알아볼 수 없는 로또 번호 배열에서, 0의 개수와 확정 일치 개수를 이용해 최고 순위와 최저 순위를 구하는 문제. 1. 문제 유형구현, 배열, 완전탐색(브루트포스) 2. 내가 놓친 포인트처음 떠올린 접근 : 순위를 직접 계산하려고 했다.max = 6, min = 6처럼 두고 맞을 때마다 줄이는 방식으로 접근했다. 오답 원인: 맞은 수 0,1 둘다 6등인데 이 부분을 어떻게 해결할지 떠올리지 못했다. 3. 핵심 로직 & 해결 방법핵심 조건: 0은 알아볼 수 없는 번호이므로 최저 순위는 0이 전부 틀린 경우, 최고 순위는 0이 전부 맞은 경우로 계산한다.풀이 아이디어:로또 번호 배열을 순회하면서 0의 개수를 센다.0이 아닌 숫자는 당첨 번호 배열과 비교해서 확정 일치 개수를 센다.best = m.. 2026. 4. 23.
[Java] 프로그래머스 - 택배상자 스택을 활용해 메인 벨트와 보조 벨트의 흐름을 시뮬레이션하는 문제 1. 문제 유형스택, 구현, 시뮬레이션 2. 내가 놓친 포인트처음 떠올린 접근 : 박스를 미리 메인 벨트용 / 보조 벨트용으로 분류해서 처리하려고 했다. 오답 원인: 박스를 미리 분류하는 문제가 아니라, 1번부터 n번까지 순서대로 들어오는 박스를 그때그때 현재 목표와 비교하며 처리하는 시뮬레이션 문제였다. 3. 핵심 로직 & 해결 방법핵심 조건: 보조 컨테이너 벨트는 스택처럼 동작하므로 가장 최근에 넣은 박스만 꺼낼 수 있다. 풀이 아이디어:메인 벨트에서는 1번부터 n번 박스가 순서대로 들어온다.현재 들어온 박스가 지금 실어야 하는 목표 박스라면 바로 적재한다.아니라면 보조 벨트(stack)에 넣는다.이후 보조 벨트 top이 현재 목표와 .. 2026. 4. 22.
[Java] 프로그래머스 - 모의고사 각 수포자의 반복 답안 패턴을 실제 정답 배열과 비교해 가장 많이 맞힌 사람을 구하는 문제 1. 문제 유형구현, 배열, 완전탐색 2. 내가 놓친 포인트처음 떠올린 접근 : 각 학생의 찍는 패턴을 배열로 만들어서 비교하려고 했다. 오답 원인: 패턴 배열의 길이보다 문제가 더 많아졌을 때 배열 끝 이후를 어떻게 다시 처음부터 비교해야 하는지 바로 떠올리지 못했다. 3. 핵심 로직 & 해결 방법핵심 조건: 각 학생은 정해진 패턴대로 반복해서 답을 찍는다.따라서 현재 문제 번호 i에서 각 학생의 답은 i % 패턴길이로 구할 수 있다. 풀이 아이디어:1번, 2번, 3번 학생의 답 패턴을 각각 배열로 만든다.answers를 순회하면서 answers[i]와 student[i % student.length]를 비교해.. 2026. 4. 21.
[Java] 프로그래머스 - 체육복 학생마다 체육복 보유 상태를 배열로 관리한 뒤, 체육복이 없는 학생에게 앞뒤 학생이 빌려줄 수 있는지 순서대로 확인하는 그리디 문제 1. 문제 유형그리디, 구현, 배열 2. 내가 놓친 포인트처음 떠올린 접근 : 학생 수만큼 배열을 만들고, 체육복이 도난당한 학생은 -1, 여벌이 있는 학생은 +1 해서 상태를 관리하려고 했다. 오답 원인: student 배열 값을 빼고 넣는 과정에서 좀 헷갈려서 값을 잘못 뺏다. 3. 핵심 로직 & 해결 방법핵심 조건: 학생은 자기 번호 기준 앞번호 또는 뒷번호 학생에게만 체육복을 빌릴 수 있다.여벌이 있는 학생도 도난당했을 수 있고, 최대한 많은 학생이 수업을 들어야 한다.풀이 아이디어:학생수만큼 값이 전부 1인 배열 생성한다.lost 학생은 -1 처리, reserve .. 2026. 4. 20.
[Java] 프로그래머스 - 타겟 넘버 각 숫자에 + 또는 - 를 붙여 만들 수 있는 모든 합 중에서, 타겟 넘버와 같은 경우의 수를 구하는 문제. 1. 문제 유형DFS 2. 내가 놓친 포인트처음 떠올린 접근 : 처음에는 visited 같은 방문 체크가 필요한 문제인가 생각했고, 숫자를 선택하는 방식처럼 접근하려 했다. 오답 원인: dfs를 구현할 때 현재 숫자 하나만 보는 게 아니라, 현재 인덱스와 현재까지의 누적합을 같이 넘겨야 한다는 점을 놓쳤다. 3. 핵심 로직 & 해결 방법핵심 조건: 각 숫자는 한 번씩 순서대로 사용하고, 매 위치마다 + 또는 - 두 경우로 나뉜다. 풀이 아이디어:dfs 함수에 index와 currentSum을 넘긴다.현재 위치의 숫자에 대해 +numbers[index], -numbers[index] 두 방향으로 .. 2026. 4. 17.