1. 조건
카드 2뭉치 주어짐
원하는 뭉치에서 순서대로 1장씩
한 번 사용한카드는 사용 불가
카드를 사용하지 않고 다음 카드 사용 불가
기존에 주어진 카드 뭉치의 단어 순서 바꾸기 불가
각 카드 cards1, cards2의 길이: 1 <= cards.length <= 10
cards1과 cards2에는 서로 다른 단어만 존재
goal의 길이: 2 <= goal.length <= cards1.length + cards2.length
2. 풀이 방식
먼저 goal[i]와 일치하는 단어만큼 비교과정을 진행해야했기에
goal의 길이 만큼 반복문을 돌려야겠다고 생각했다.
그리고 0번째 index부터 차근차근 비교해 나가야하기 때문에
queue를 사용하면 되겠다 라고 생각하여 shift()를 활용하기로 했다.
3. 풀이
function solution(cards1, cards2, goal) {
for (let i = 0; i < goal.length; i += 1) {
if (cards1[0] === goal[i]) {
cards1.shift()
} else if (cards2[0] === goal[i]) {
cards2.shift()
} else {
return "No"
}
}
return "Yes"
}
4. 후기
와 내가 드디어 생각이란걸하고
어떤 알고리즘을 사용할지 고민해보고서
짧은시간안에 원테이크로 문제를 풀어버리는 경험을 했다.
존나 카리스마있어.
다만 이 문제에서
각 카드 뭉치에 겹치는 단어가 있을 수 있다는 조건이 있었다면 어땠을까?
라는 생각을 해보았다.
아 끔찍해
'개발이야기 > 알고리즘' 카테고리의 다른 글
[알고리즘] 덧칠하기 (0) | 2023.03.29 |
---|---|
[알고리즘] 대충 만든 자판 (0) | 2023.03.29 |
[알고리즘] 둘만의 암호 (0) | 2023.03.26 |
[알고리즘] 크기가 작은 부분문자열 (0) | 2023.03.26 |
[알고리즘] 기사단원의 무기 (0) | 2023.03.24 |