-
[programmers/Swift] 체육복Archive/Questions 2022. 5. 11. 20:08728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 탐욕법(Greedy) - 체육복
Constraints :
- 전체 학생의 수는 2명 이상 30명 이하입니다.
- 체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.
- 여벌의 체육복을 가져온 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.
- 여벌 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있습니다.
- 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.
// // Created by Yongwoo Marco on 2022/04/15. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int { var mutableReserve = reserve let exceptReserveLosts = lost.filter { if let index = mutableReserve.firstIndex(of: $0) { mutableReserve.remove(at: index) return false } return true }.sorted(by: <) let finalLosts = exceptReserveLosts.filter { if let index = mutableReserve.firstIndex(of: $0 - 1) { mutableReserve.remove(at: index) } else if let index = mutableReserve.firstIndex(of: $0 + 1) { mutableReserve.remove(at: index) } else { return true } return false } return n - finalLosts.count } print(solution(5, [2, 4], [1, 3, 5])) // 5 print(solution(5, [2, 4], [3])) // 4 print(solution(3, [3], [1])) // 2
How I tried this :
주어진 테스트 케이스는 다 되는데 제출시 2개가 틀려서 애먹었다..finalLosts를 구할때 왼쪽 오른쪽 순으로 정해놨는데
exceptReserveLosts 의 번호가 순서대로 되어있지 않아서 발생한 문제였다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 프린터 (0) 2022.05.11 [programmers/Swift] 위장 (0) 2022.05.11 [programmers/Swift] 신규 아이디 추천 (2021 Kakao Blind Recruitment) (0) 2022.05.11 [programmers/Swift] 실패율 (2019 Kakao Blind Recruitment) (0) 2022.05.11 [programmers/Swift] [1차]다트게임 (2018 Kakao Blind Recruitment) (0) 2022.05.10