Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 몽고 인덱스
- 결제서비스
- 이분탐색
- ipo 매매자동화
- 카카오
- 크롤링
- AWS
- spring event
- 디버깅
- 완전탐색
- dau 3만명
- 베타적락
- 프로그래머스
- BFS
- gRPC
- 알람시스템
- 구현
- 누적합
- langgraph
- 쿠키
- 셀러리
- docker
- piplining
- 추천 검색 기능
- 백준
- 아키텍쳐 개선
- 관측가능성
- ai agent
- JPA
- next-stock
Archives
- Today
- Total
코딩관계론
[프로그래머스] 비밀 코드 해독 본문
반응형
문제 이해하기
비밀 코드는 1 ~ n 사이의 서로 다른 5개의 수로 구성된 오름차순 조합입니다.
총 m번의 시도를 통해 비밀 코드를 추측할 수 있으며, 매 시도마다 서로 다른 5개의 수를 입력합니다.
시스템은 각 시도에 대해, 입력값 중 몇 개가 비밀 코드에 포함되어 있는지를 알려줍니다.
예를 들어, 비밀 코드가 [3, 5, 7, 9, 10]이고
우리가 [1, 2, 3, 4, 5]를 입력했다면,
겹치는 수는 3과 5, 총 2개이므로 시스템은 2를 응답합니다
문제 해결 방법 설명하기
- 가능한 모든 5개 조합을 생성합니다. (1 ~ n 중 5개 선택)
- 각 조합이 모든 시도의 결과와 정확히 일치하는지 확인합니다.
- 조건을 모두 만족하는 조합만을 필터링하여 개수를 셉니다.
코드
function getCombinations(arr, selectCount) {
const result = [];
function combine(current, start) {
if (current.length === selectCount) {
result.push([...current]);
return;
}
for (let i = start; i < arr.length; i++) {
current.push(arr[i]);
combine(current, i + 1);
current.pop();
}
}
combine([], 0);
return result;
}
function solution(n, q, ans) {
var answer = 0;
const arr = Array.from({ length: n }, (_, i) => i + 1);
combs = getCombinations(arr, 5)
for(let i = 0; i < combs.length; ++i){
let isRight = true
for(let j = 0; j < ans.length; ++j){
const target = ans[j]
const set = new Set(q[j]);
const result = combs[i].filter(x => set.has(x));
if(target !== result.length){
isRight = false
break
}
}
if(isRight){
answer += 1
}
}
return answer;
}
코드 리뷰
기존에는 다음과 같이 isRight
변수를 선언하고 상태를 관리했습니다. 두 구조는 동등하지만, 두 번째 방식은 불필요한 상태 변수 없이 흐름을 제어할 수 있어 더 간결하고 읽기 쉽습니다. 물론, 두 접근 방식 중 어떤 것을 선택할지는 가독성과 팀 코드 스타일에 따라 유연하게 결정할 수 있습니다.
let isRight = true;
for (조건 반복) {
if (조건 불만족) {
isRight = false;
break;
}
}
if (isRight) {
answer += 1;
}
-- 새로운 코드 ---
for (let i = 0; i < n; ++i) {
if (조건 불만족) break;
if (i === n - 1) {
// 조건을 끝까지 통과했을 때 수행할 로직
}
}
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2025.04.28 |
---|---|
[PCCP 기출문제] 1번 / 붕대 감기도움말 (0) | 2025.04.27 |
[카카오] 두 큐 합 같게 만들기 (0) | 2024.08.23 |
[과제테스트] 게임 승률 조회하기(python) (0) | 2024.05.19 |
[백준]AC (1) | 2024.05.11 |