-
[programmers/Swift] 신규 아이디 추천 (2021 Kakao Blind Recruitment)Archive/Questions 2022. 5. 11. 00:54728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 2021 Kakao Blind Recruitment - 신규 아이디 추천
Constraints :
- new_id는 길이 1 이상 1,000 이하인 문자열입니다.
new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.
new_id에 나타날 수 있는 특수문자는 -_.~!@#$%^&*()=+[{]}:?,<>/ 로 한정됩니다.
// // Created by Yongwoo Marco on 2022/05/06. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ new_id:String) -> String { let phaseOne = new_id.map{ Character($0.lowercased()) } let phaseTwo = phaseOne.filter{ $0.isLetter || $0.isNumber || $0 == "-" || $0 == "_" || $0 == "." } let phaseThree = phaseTwo.map{ String($0) }.reduce(""){ first, added in if let last = first.last, last == ".", added == "." { return first } else { return first + added } } let phaseFour = phaseThree.trimmingCharacters(in: ["."]) let phaseFive = phaseFour.isEmpty ? "a" : phaseFour let phaseSix = phaseFive.count > 15 ? ( Array(phaseFive)[14] == "." ? Array(phaseFive)[0..<14].map{ String($0) }.joined() : Array(phaseFive)[0..<15].map{ String($0) }.joined() ) : phaseFive var phaseSeven = phaseSix while phaseSeven.count < 3 { phaseSeven.append(phaseSeven.last!) } return phaseSeven } print(solution("...!@BaT#*..y.abcdefghijklm")) // "bat.y.abcdefghi" print(solution("z-+.^.")) // "z--" print(solution("=.=")) // "aaa" print(solution("123_.def")) // "123_.def" print(solution("abcdefghijklmn.p")) // "abcdefghijklmn"
How I tried this :
생각보다 단순하지만 문법적인 기능 체크를 많이 하는 문제였다.What I got is :
replacingOccurrences()// 배운 풀이 str: String while str.contains("..") { newID = str.replacingOccurrences(of: "..", with: ".") } // 4단계 내 풀이 [Characters]() arr = arr.map{ String($0) }.joined().trimmingCharacters(in: ["."]).map{ Character(extendedGraphemeClusterLiteral: $0) } // 배운 풀이 str: String if str.hasPrefix(".") { str.removeFirst() } if str.hasSuffix(".") { str.removeLast() }
정말 배울게 한도 끝도 없다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 위장 (0) 2022.05.11 [programmers/Swift] 체육복 (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 [programmers/Swift] 부족한 금액 계산하기 (0) 2022.05.10 - new_id는 길이 1 이상 1,000 이하인 문자열입니다.