https://school.programmers.co.kr/learn/courses/30/lessons/159994#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제설명]
코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.카드 뭉치의 단어 순서는 바꿀 수 없습니다.
- 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.
- 한 번 사용한 카드는 다시 사용할 수 없습니다.
- 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.
- 기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.
[해설]
순서대로 내보내야하고, 순서 변경되면 안되므로 아 큐 문제구나!
goal의 문제와 cards1 or cards2와 같은것을 찾아야 된다는 생각을 했고, 같으면 빼야된다는 생각이 들었다.
궁극적으로 No인 조건을 생각해내지 못했다. 한개씩 차례로 빼서 goal이 빈 값인 경우를 모든 순서대로 card를 사용한 것으로 보면될듯!
1. goal의 첫번째 값과 cards1의 첫번째, cards2 첫번째를 비교해
2. cards1, cards2 둘다 있는 경우 사용할 수 있는 카드가 있다면 그 카드에서 빼줘 goal도 빼주고
3. goal이 빈값인 경우 차례로 모든 단어를 사용했다는 의미.
function solution(cards1, cards2, goal) {
var answer = 'Yes';
while (goal.length > 0) {
const card = goal[0];
if (cards1.length > 0 && card === cards1[0]) {
cards1.shift();
goal.shift();
} else if (cards2.length > 0 && card === cards2[0]) {
cards2.shift();
goal.shift();
} else {
break;
}
}
return goal.length === 0 ? 'Yes' : 'No';
}
'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 할인 행사 (2) | 2024.03.05 |
---|---|
[프로그래머스] 방문 길이 (0) | 2024.03.03 |
[프로그래머스] 행렬의 곱셈 (0) | 2024.02.24 |