일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- MKMapViewDelegate
- 러닝기록앱
- Required Reason API
- 서체관리자
- CLLocationManagerDelegate
- 클로저의 캡슐화
- WeatherManager
- xcode로 날씨앱 만들기
- MKMapItem
- 러닝타이머
- Timer
- font book
- Startign Assignments
- UICollectionViewFlowLayout
- Protocol
- dispatchsource
- Xcode
- SwiftUI Boolean 값
- weak var
- weatherKit
- 영문 개인정보처리방침
- swift
- AnyObject
- App Store Connect
- 한국어 개인정보처리방침
- CoreLocation
- RunningTimer
- 단일 책임원칙
- UIAlertAction
- addannotation
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 |