Link
Notice
HIT해
[프로그래머스] 카드 뭉치 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
goal 배열을 두번 순회하면서 일치하는지 확인하고 최초 접근 인덱스 위치를 변경해 알아보려했다.
코드
import Foundation
func solution(_ cards1:[String], _ cards2:[String], _ goal:[String]) -> String {
// goal을 두번 순회하면서 인덱스위치를 저장하고 그 후에 다음 요소가 존재하고 안하고를 판별해보자.
var index = 0
var count = 0
for i in cards1 {
for j in index..<goal.count {
if goal[j] == i {
index = j
count += 1
continue
}
}
}
if count != cards1.count {
return "No"
}
index = 0
count = 0
for i in cards2 {
for j in index..<goal.count {
if goal[j] == i {
index = j
count += 1
continue
}
}
}
if count != cards2.count {
return "No"
}
return "Yes"
}
결과

특정 테스트케이스에서 실패했다.
그이유는 goal 의 순서를 고려하지 않아서 그렇다.
수정한 코드
한번의 배열 순회안에서 두개의 인덱스를 동시에 관리하면 쉽게 해결할 수 있다.
import Foundation
func solution(_ cards1:[String], _ cards2:[String], _ goal:[String]) -> String {
var index1 = 0
var index2 = 0
for word in goal {
if index1 < cards1.count && cards1[index1] == word {
index1 += 1
} else if index2 < cards2.count && cards2[index2] == word {
index2 += 1
} else {
return "No"
}
}
return "Yes"
}
'Swift > 알고리즘' 카테고리의 다른 글
프로그래머스 - 추억 점수 (0) | 2025.02.02 |
---|---|
[프로그래머스] 배열 두배 만들기 (0) | 2024.11.28 |
[Swift] Swift 수학 연산 및 Reduce (0) | 2024.11.02 |
[Swift] String (0) | 2024.11.02 |
[Swift/백준] 가장 긴 증가하는 부분 수열 ( LIS , DP ) (0) | 2024.11.02 |