240320-TIL

2024. 3. 20. 22:19내일배움캠프

3월 20일

 

오늘은 카드뭉치 문제를 풀어보겠다

 

카드 뭉치

더보기

문제 설명이다

 

 

코니를 족치면 문제를 풀 필요도 없겠지만 코니는 소중하니깐....

 

문제만 보면 도대체 어떤 상황일때 No가 출력되게 하라는 건지 잘 모르겠다 그러니 입출력 예를 봐보자

 

 

아하 입출력 예 #2를 보면 저런 상황일때 No가 출력되게 하라는 거구나?

 

자 그렇다면 솔루션의 초기 상태를 봐보자

 

 

솔루션의 매개변수는 순서대로 카드덱 1번 카드덱 2번 그리고 1번과 2번을 조합해서 만든 goal이란 매개변수가 있다

 

1번덱에 있는 글자와 2번덱에 있는 글자 순서를 지키면서 goal을 만들었다면? Yes 아니면 No를 출력하게 해야한다

 

 

나는 goal의 길이만큼 반복문을 돌면서 goal의[i]번째 글자가 cards1에 있는지 cards2에 있는지 확인해야 한다

 

그래서 일단 cards1의 인덱스를 가져오기 위한 cards1Index와 card2의 인덱스를 가져오기 위한 cards2Index를

 

만들어주자 그리고 goal에 있는 글자를 확인하기 위한 반복을 진행해줄 반복문을 하나 만들어주자

 

for문안에 조건하나를 추가하자 cards1Index가 cards1의 길이보다 작은게 확실하고 goal의 i번째 글자와

cards1의 cards1Index번째 글자가 같다면 cards1Index를 하나 늘려주고 answer 은 Yes로 표시해주자

 

첫 조건을 고민해서 만들었다면 두번째 그리고 둘다 아닐때의 조건을 금방 만든다

 

첫 조건이 아니라면 두번째 카드뭉치에서 goal의 i번째 글자와 두번째 카드덱의 cards2Index가 같은지 확인하자

 

맞다면 여기서도 answer은 Yes가 된다.

 

만약 그럴일은 없겠지만 문제가 잘못되어서 goal의 i번째 글자가 cards1, cards2에도 없다면? else로 직행하게되서

 

answer에는 "No" 가 들어가게되고 answer을 반환하고 해당 솔루션은 종료되게 된다

 

또다른 조건으로는 cards1, cards2 모두 해당 반복문을 돌며 1번 카드뭉치 2번카드뭉치에 적힌 글자를 순차적으로

 

goal의 i번째 글자와 비교하고있다. goal의 i번째 글자가 카드뭉치 1번과 2번의 각 순서에 맞지 않다면?

 

else로 직행하여 No를 리턴해주고 솔루션이 끝나게 된다.

 

한번 내 생각대로 문제가 풀리는지 확인해보자

 

 

통과!

 

오늘은 카드뭉치 알고리즘 문제를 풀어보았다.

 

다른 사람 문제풀이에서도 특별한게 보이지 않는데

 

막상 풀어보면 그렇게 어려운 문제도 아니었던거 같다.

 

3월 20일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240322-TIL  (0) 2024.03.22
240321-TIL  (0) 2024.03.21
240319-TIL  (0) 2024.03.19
240318-TIL  (0) 2024.03.18
240315-TIL  (0) 2024.03.15