티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/12926
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀
programmers.co.kr
내 풀이
못 푼 문제
못 푼 문제는 주말에 복습!
다른사람의 풀이
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
}))
}
solution("aBaSaB", 1)
풀이
더보기
1. 알파벳을 문자열로 배열한뒤 map으로 하나씩 정렬 합니다.
2. 파라미터 s의 값이 비었을 경우 guard let 으로 ""를 반환하게 걸러줍니다.
3. 파라미터 s의 전체값을 소문자로 바꾸고 (lowercased()) map으로 하나씩 순회하며 alphabets.firstIndex(of:)로 해당 index 를 가져와 저장 합니다.
4. z 이후에 다시 a 부터 시작해야 하므로 [(index + n) % alphabets.count] 로 처음으로 돌아갈 수 있게 조절해줍니다.
5. s에 대문자가 있다면 (isUppercase) 해당 부분은 대문자로 바꿔주고 (.uppercased()) 소문자면 소문자로 반환해줍니다.
배운것
firstIndex(of:)
(of: element) element에 일치하는 값의 index를 반환 합니다.
예제
var students = ["Ben", "Ivy", "Jordell", "Maxime"]
// element에 일치하는 값이 있는지 확인 (if let)
// 있으면: i = 일치하는 값의 index
// 없으면: pass
if let i = students.firstIndex(of: "Maxime") {
// i = 3
students[i] = "Max"
}
print(students)
// Prints "["Ben", "Ivy", "Jordell", "Max"]"
728x90
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘] - 이상한 문자 만들기(Programmers) (0) | 2022.05.16 |
---|---|
[Swift 알고리즘] - 콜라츠 추측 (Programmers) (0) | 2022.05.13 |
[Swift 알고리즘] - Max Consecutive Ones (연속되는 숫자 1의 최대값 구하기) (0) | 2022.05.10 |
[Swift 알고리즘] - 약수의 합 (0) | 2022.05.04 |
[Swift 알고리즘] - 핸드폰 번호 가리기 (0) | 2022.05.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Class
- Swift inout
- swift 고차함수
- swift protocol
- Swift init
- swift reduce
- Swift RIBs
- iOS error
- swift (programmers)
- RTCCameraVideoCapturer
- swift property
- RIBs tutorial
- removeLast()
- Swift 알고리즘
- Swift joined
- Swift 프로퍼티
- Swift
- 원티드 프리온보딩
- Swift joined()
- Swift Leetcode
- Swift 내림차순
- Combine: Asynchronous Programming with Swift
- Swift final
- ios
- swift programmers
- Swift 프로그래머스
- Swift Error Handling
- Swift ModernRIBs
- CS 네트워크
- 2023년 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함