반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/12926?language=swift
풀이
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()
}
- 문제 자체는 쉬웠다. 나는 아스키 코드를 사용해 풀었다.
- 하지만 아스키 코드는 뭔가 '알고리즘'을 통해 해결했다는 느낌이 없다. 아스키 코드를 모르면 풀 수 없다.
func solution(_ s:String, _ n:Int) -> String {
let alphabets = "abcdefghijklmnopqrstuvwxyz".map { $0 }
return String(s.map {
guard let index = alphabets.firstIndex(of: Character($0.lowercased())) else { return $0 }
let letter = alphabets[(index + n) % alphabets.count]
return $0.isUppercase ? Character(letter.uppercased()) : letter
})
}
- 이 방식은 아스키코드를 몰라도 되는 정말 '알고리즘'적인 풀이 방식이다.
- 생각하지 어려운 것은 아니지만, 인상깊어서 기록해 놓는다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 비밀지도 (프로그래머스 lv1, 스위프트) (0) | 2022.02.05 |
---|---|
[알고리즘 연습] 다트 게임 (프로그래머스 lv1, 스위프트) (0) | 2022.02.05 |
[알고리즘 연습] 신규 아이디 추천 (프로그래머스 lv1, 스위프트) (0) | 2022.01.22 |
[알고리즘 연습] 소수 만들기 (프로그래머스 lv1, 파이썬) (2) | 2021.12.30 |
[알고리즘 연습] 길찾기 게임 (프로그래머스 lv3, 파이썬) (0) | 2021.07.12 |