일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- MKMapViewDelegate
- RunningTimer
- WeatherManager
- MKMapItem
- 한국어 개인정보처리방침
- Startign Assignments
- 러닝기록앱
- CoreLocation
- xcode로 날씨앱 만들기
- swift
- CLLocationManagerDelegate
- dispatchsource
- App Store Connect
- UICollectionViewFlowLayout
- weak var
- addannotation
- 영문 개인정보처리방침
- Protocol
- Required Reason API
- UIAlertAction
- 서체관리자
- 러닝타이머
- SwiftUI Boolean 값
- font book
- weatherKit
- 클로저의 캡슐화
- Timer
- 단일 책임원칙
- AnyObject
- Xcode
Archives
- Today
- Total
VesselWheel
시저암호 본문
문제
풀이
func solution(_ s: String, _ n: Int) -> String {
let lowerCaseLetters = Array("abcdefghijklmnopqrstuvwxyz")
let upperCaseLetters = Array("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
var result = ""
for char in s {
if char == " " {
result.append(" ")
continue
}
let letters = char.isLowercase ? lowerCaseLetters : upperCaseLetters
if let index = letters.firstIndex(of: char) {
let shiftedIndex = (index + n) % 26
result.append(letters[shiftedIndex])
}
}
return result
}
해석
1. 알파벳이 대문자, 소문자로 이루어져 있고, String 값을 반환해야하기 때문에 각기 프로퍼티화하여 초기화 한다.
let lowerCaseLetters = Array("abcdefghijklmnopqrstuvwxyz")
let upperCaseLetters = Array("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
var result = ""
2. 제한 조건에 공백은 아무리 밀어도 공백이기 때문에, 공백일 경우 공백값 그대로 String에 넣어준다.
for char in s {
if char == " " {
result.append(" ")
continue
}
3. 문자열 s를 넣어준 char 프로퍼티가 소문자이면 소문자를, 아니면 대문자를 letters에 프로퍼티화 하고,
let letters = char.isLowercase ? lowerCaseLetters : upperCaseLetters
4. 프로퍼티화 한 char 타입의 letters의 인덱스를 찾아, n 만큼 민, 즉 n 만큼 더해준 인덱스에 알파벳의 총 글자가 26이므로, 26으로 나누어주면, n 만큼 밀어진 알바벳읠 26개 글자에서 원래 순서에 해당되는 알파벳을 구할 수 있다.
let shiftedIndex = (index + n) % 26
result.append(letters[shiftedIndex])
5. 마지막으로 밀어져서 정해진 순서의 알바벳을 String 반환 값에 넣어 것은 return 한다.
'Coding Test Practice in Swift' 카테고리의 다른 글
최소직사각형 (0) | 2024.02.23 |
---|---|
크기가 작은 부분문자열 (0) | 2024.02.22 |
삼총사 (considering 시간복잡도) / 시간복잡도를 고려하니 중복값 문제 발생 (0) | 2024.02.20 |
이상한 문자 만들기 (0) | 2024.02.19 |
3진법 뒤집기 (1) | 2024.02.02 |