스파르타 코딩 클럽 - iOS 스타터 6기/알고리즘 코드카타
31. 스파르타 코딩 클럽 - 5월 29일 코딩테스트 연습 (코드카타)
seongpil Heo
2025. 5. 29. 21:15
❓ 오늘의 문제
1. 암호 해독
- 군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
- 암호화된 문자열 cipher를 주고받습니다.
- 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
- 문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return 하도록 solution 함수를 완성해 주세요.
나의 정답 코드
import Foundation
func solution(_ cipher:String, _ code:Int) -> String {
var result = ""
for (index, char) in cipher.enumerated() {
if (index + 1) % code == 0 {
result.append(char)
}
}
return result
}
✓ TIL
[ enumerated ]
enumerated() | Apple Developer Documentation
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
developer.apple.com
🎯 enumerated란?
- enumerated()는 현재 컬렉션의 각 요소에 대해 (인덱스, 값) 형태의 튜플을 반환하는 시퀀스를 만듭니다.
- 인덱스는 0부터 시작하며, 각 요소에 대해 자동으로 1씩 증가합니다.
👍 enumerated의 장점
- Swift의 String은 인덱스 타입이 Int가 아니라 String.Index입니다.
- 그래서 일반적으로 정수 인덱스로 직접 접근하기가 복잡하지만,
- enumerated()를 쓰면 (index, character) 형식으로 손쉽게 문자와 위치를 함께 다룰 수 있습니다.
import Foundation
func solution(_ cipher:String, _ code:Int) -> String {
var result = ""
for (index, char) in cipher.enumerated() {
if (index + 1) % code == 0 {
result.append(char)
}
}
return result
}
코드를 설명하자면 for문에서 enumerated()를 사용하여 주어진 cipher를
index와 character 형식으로 사용한다.
index + 1을 code로 나누었을 때 나머지가 0이면
결괏값을 return 할 result 변수에 char을 append 한다.
index + 1을 하는 이유는 code가 만약 4일 때,
index에 1을 더하지 않고 사용하면 index가 0부터 시작하기 때문에
4번째 자리 값이 아닌 5번째 자리 값을 사용하기 때문에
index + 1을 한 뒤 사용한다.
for문을 다 돌고 난 뒤
최종적으로 result 변수를 return 한다.