-
[programmers/Swift] 시저 암호Archive/Questions 2022. 4. 28. 19:39728x90
programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 시저 암호
Constraints :
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
// // Created by Yongwoo Marco on 2022/04/28. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ s:String, _ n:Int) -> String { let values = (a: Character("a").asciiValue!, z: Character("z").asciiValue!, A: Character("A").asciiValue!, Z: Character("Z").asciiValue!) let ranges = (lowercase: values.a...values.z, uppercase: values.A...values.Z) return s.map { char in if char == " " { return String(char) } else { let value = char.asciiValue! var sum = value + UInt8(n) if ranges.lowercase ~= value && sum > values.z { sum = sum - values.z + values.a - 1 } else if ranges.uppercase ~= value && sum > values.Z { sum = sum - values.Z + values.A - 1 } return String(Character(UnicodeScalar(sum))) } }.joined() }
How I tried this :
a, z, A, Z 문자의 아스키 값을 받고 각 문자가
소문자인지 대문자인지에 따라서옮겨진 값이 z 또는 Z를 넘어가는 경우 다시 a 로 넘어가도록 처리
나머지 경우는 n 만큼 옮겨진 값을 다시 문자로 변환
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 최솟값 만들기 (0) 2022.04.28 [programmers/Swift] 수박수박수박수박수박수? (0) 2022.04.28 [programmers/Swift] 약수의 합 (0) 2022.04.28 [programmers/Swift] 최댓값과 최솟값 (0) 2022.04.28 [programmers/Swift] 이상한 문자 만들기 (0) 2022.04.27