반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스 - 시저 암호 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12926
풀이
이번 문제는 문자열을 활용하는 문제였습니다.
c++처럼 Int로 변환한 뒤 처리하는 방법을 쓸까 index로 접근하는 방법을 쓸까 고민을 했는데요.
Swift에서는 String을 변환하는 작업이 비교적 편리하여 index로 접근하는 방법을 사용했습니다.
알파벳 전체 배열을 먼저 선언을 해뒀고 n을 더한 index를 알파벳 배열에서 찾아서 기존 문자와 대치 시켰습니다.
전체 코드
import Foundation
func solution(_ s:String, _ n:Int) -> String {
let alphabet = Array("abcdefghijklmnopqrstuvwxyz")
let result = s.map { s->Character in
if s == " " {
return s
} else {
let index = alphabet.firstIndex(of: Character(s.lowercased()))! + n
let char = alphabet[index%26]
return s.isLowercase ? char : Character(char.uppercased())
}
}
return String(result)
}
let s = "AB"
let n = 1
print(solution(s, n))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형