-
[Swift 코딩테스트] 프로그래머스 - 체육복개발/Swift 2021. 11. 29. 18:50
문제를 해결하기 위해 처음 생각했던것은
1.우선 멀쩡한 놈들을 계산한다. (전체 학생수 - lost 배열 길이)
lost 배열을 반복문 돌린후에
2.Lost 배열 앞에번호를 가지고 reserve에 있는지 확인
3.없으면 뒷번호 reserve에 있는지 확인하여
4.있으면 count를 1 증가시키는 방식이었다.
몇가지 테스트에 합격하지 않아 추가적으로
1.주어진 배열두개를 정렬함
2.여벌이있는데 도난당한경우 해당 번호를 두 배열에서 제거함 (여벌도없고 잃어버리지도 않은 상태임)
이 두 로직을 추가하여 해결하였다.
import Foundation func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int { var reserveList = reserve var lostList = lost //정렬 lostList.sort() reserveList.sort() //여벌+도난의 경우 배열에서 제거 for reserveItem in reserveList { if let lostIndex = lostList.firstIndex(of:reserveItem), let reserveIndex = reserveList.firstIndex(of: reserveItem) { reserveList.remove(at: reserveIndex) lostList.remove(at:lostIndex) } } //일단있는놈 계산 전체학생 -lost var count = n - lostList.count //lost 주변에 reserve있늕지 확인 for lostIndex in lostList { if let index = reserveList.firstIndex(of:lostIndex - 1) { reserveList.remove(at:index) count += 1 }else if let index = reserveList.firstIndex(of:lostIndex + 1) { reserveList.remove(at:index) count += 1 } } return count }
'개발 > Swift' 카테고리의 다른 글
[Swift] UIResponder 대략 알아가기 (0) 2021.12.01 [Swift] PromiseKit 사용하여 콜백지옥 빠져나오기 (0) 2021.11.30 GCD - DispatchQueue Main/Global 큐 스레드에 관해 (0) 2021.11.23 언제 class 대신 struct 를 사용할까? (0) 2021.11.14 [Swift] 클래스의 init 파헤치기 (0) 2021.10.18