Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- javascript
- 프로젝트캠프
- 네트워크
- 인사이드아웃
- ip
- 리액트
- 알고리즘
- 유데미
- 해시
- 프로그래머스
- 타입스크립트
- react
- typescript
- CS
- 스레드
- App Runner
- html
- 자바스크립트
- 메모리
- react-query
- Algorithm
- 웅진씽크빅
- React.js
- IT개발캠프
- cs #네트워크
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- 개발자부트캠프
- 프로세스
- 스나이퍼팩토리
- BFS
Archives
- Today
- Total
Bin's Blog
[프로그래머스] Level2 - 혼자 놀기의 달인(Javascript) 본문
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝 문제 요약
1️⃣ 카드는 1 ~ 100까지의 숫자가 존재, 준비된 상자에 카드를 한 장씩 넣고 상자를 무작위를 섞어 일렬로 나열했다.
2️⃣ 나열된 순서에 따라 1번부터 순차적으로 증가한다.
3️⃣ 임의 상자를 열어 카드를 확인하고 또 1번에 해당하는 상자를 열어 확인한다. 열어야 하는 상자가 이미 열려있을 대까지 반복한다.
4️⃣ 1번 상자 제외하고 남는 상자가 없으면 게임은 종료되고 점수는 0점이다.
5️⃣ 그렇지 않으면 1번 상자 제외하고 남는 상자 있으면 1번 방식으로 이미 열려있는 상자를 만날 때가지 상자를 연다.
6️⃣ 1번 2번 상자의 수를 곱한게 정답이 된다. 게임에서 얻을 수 있는 최고점수를 구해라.
✅ 정답 코드
function solution(cards) {
let answer = [];
// 방문 표시
let visited = Array.from(Array(cards.length + 1).fill(false));
for (let v of cards) {
// 만약하지 방문하지 않는 곳이면
if (!visited[v]) {
// 빈 리스트 생성
let temp = [];
// temp에 방문하지 않았으면
while (!temp.includes(v)) {
// temp에 넣어준다.
temp.push(v)
// cards[v-1] 한 원소가 다음 확인할 카드
v = cards[v-1];
// 방문표시
visited[v] = true;
}
// 상자의 수를 담는다
answer.push(temp.length);
}
}
// 1번 상자 그룹을 제외하고 남는 그룹 즉 1번 상자만 있을때는 0이다.
if (answer[0] == cards.length) {
return 0
// 내림차순 정렬으로 가장 점수가 큰 2개의 수를 뽑는다.
} else {
answer.sort((a, b) => b - a);
return answer[0] * answer[1]
}
}
🖨️ 실행결과
📔느낀점
👉 카드와 관련된 문제에서 중요한건 패턴을 찾는 연습을 해야 한다. 생각보다 이런 유형은 패턴을 찾으면 쉽다.
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] Level2 - 광물 캐기(Javascript) (0) | 2023.08.30 |
---|---|
[프로그래머스] Level2 - 후보키(Javascript) (0) | 2023.08.24 |
[프로그래머스] Level2 - 미로 탈출(Javascript) (0) | 2023.08.22 |
[프로그래머스] Level2 - 테이블 해시 함수(Javascript) (0) | 2023.08.21 |
[프로그래머스] Level2 - 시소 짝꿍(Javascript) (0) | 2023.08.18 |