내 풀이
func solution(_ s:String, _ n:Int) -> String {
return s.utf8.map {
var code = Int($0)
switch code {
case 65...90:
code = (code + n - 65) % 26 + 65
case 97...122:
code = (code + n - 97) % 26 + 97
default:
break
}
return String(UnicodeScalar(code)!)
}.joined()
}
- 문자열 s를 UTF-8로 인코딩하여 문자열을 바이트 배열로 변환
- 변환된 바이트 배열을 순회하며 각 문자의 ASCII 코드 값 확인
- 값이 대문자 알파벳('A'부터 'Z')인 경우와 소문자 알파벳('a'부터 'z')인 경우에 대해 각각 시저 암호를 적용하여 밀어낸 값 구하기
- 대문자의 경우, ASCII 코드 값에서 65를 뺀 후 n을 더하고, 26으로 나눈 나머지를 구함, 이후 다시 65를 더해 원래 대문자로 변환
- 소문자의 경우, ASCII 코드 값에서 97을 뺀 후 n을 더하고, 26으로 나눈 나머지를 구함, 이후 다시 97을 더해 원래의 소문자로 변환
- 변환된 문자들을 다시 문자열로 결합하여 암호화된 문자열 생성
알고리즘................
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열 내 마음대로 정렬하기 (0) | 2024.03.08 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 숫자 문자열과 영단어 (0) | 2024.03.07 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 최소 직사각형 (2) | 2024.03.05 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 크기가 작은 부분 (0) | 2024.03.04 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 삼총사 (0) | 2024.02.29 |