-
[Swift] 큰수만들기 코딩테스트 프로그래머스개발/Swift 2022. 2. 9. 15:32
해결 방법
주어진 숫자에서 앞숫자 < 뒷숫자 인경우 앞숫자를 지워주고
k 만큼 제거될때까지 number 를 반복시켜주면됨
func solution(_ number:String, _ k:Int) -> String { var arr = number.map{String($0)} var removeCount = 0 while k != removeCount { for i in 0..<arr.count{ if(arr[i]<arr[i+1]){ arr.remove(at: i) removeCount += 1 break } } } return arr.joined() }
하지만 제거할 숫자가 남았는데도 배열이 내림차순 정렬이 되어버렸다면
더이상 지울수없어진다. 이때는 마지막에서부터 남은 갯수만큼 지워주면 된다.
if(i == arr.count-2){ arr.removeLast() removeCount += 1 break }
전체 코드
func solution(_ number:String, _ k:Int) -> String { var arr = number.map{String($0)} var removeCount = 0 while k != removeCount { for i in 0..<arr.count{ if(arr[i]<arr[i+1]){ arr.remove(at: i) removeCount += 1 break } } if(i == arr.count-2){ arr.removeLast() removeCount += 1 break } } return arr.joined() }
실패 해결 방법
가장 작은 수들을 k만큼 제거시킨다.
예로 4177252841 k = 4인경우
에서는 1이 2개 2가 2개이므로 1,2를 다지우면 477584가 가장큰수
func solution(_ number:String, _ k:Int) -> String { var arr = number.map{String($0)} var removeCount = 0 // func remove(findNumber:Int){ for i in 0..<arr.count{ if(removeCount == k) { print("break") break } if(Int(arr[i]) == findNumber){ arr.remove(at: i) removeCount += 1 //지워지면 arr 변경된거로 재귀 print("currentArray \\(arr) \\(removeCount)") remove(findNumber:findNumber ) break }else{ //마지막이면 1증가해서 재귀 if(i == arr.count-1){ print("call remove from last") remove(findNumber: findNumber+1) } } } } remove(findNumber: 1) print(arr.joined()) return arr.joined() }
'개발 > Swift' 카테고리의 다른 글
[Swift] 조이스틱 코딩테스트 프로그래머스 (0) 2022.02.13 [Swift] 섬 연결하기 프로그래머스 코딩테스트 (0) 2022.02.09 UIApplication / @main/ AppDelegate 은 무엇일까? (0) 2022.02.04 [Swift] 카펫 프로그래머스 코딩테스트 (0) 2022.01.28 [Swift] 소수 찾기 코딩테스트 프로그래머스 (0) 2022.01.25