[Swift/프로그래머스] 특정한 문자를 대문자로 바꾸기

sonny·2025년 1월 1일
1

TIL

목록 보기
89/140

나의 답)

import Foundation

func solution(_ my_string:String, _ alp:String) -> String {
       return my_string.map { $0 == Character(alp) ? $0.uppercased() : String($0) }.joined()
}

이번 문제는 문자열과 조건문을 활용하여 특정 문자를 대문자로 변환하는 작업이었는데, 해결을 하면서 과정을 한번 적어보려 한다.


문제를 분석해보자면, 주어진 조건은 두 가지였다.

  • 하나는 문자열 my_string에서 특정 문자를 찾아야 한다는 점이고
  • 다른 하나는 해당 문자를 대문자로 변환해야 한다는 점이었다.

문제 자체는 간단해 보였지만 Swift에서 문자열을 다루는 방법과 변환 로직을 효율적으로 구성하는 것이 관건인 문제였다.


2. 해결 방안 구상

처음에는 for-in 루프를 사용해 각 문자를 확인하며 새로운 문자열을 만드는 방법을 떠올렸다.

하지만 Swift에서는 고차함수인 map을 사용하면 각 문자를 쉽게 변환할 수 있다는 점을 떠올랐고, 이걸 활용하기로 결정했다.

map은 배열을 변환하는 고차 함수이지만, Swift의 String도 순회 가능한 컬렉션이기 때문에 적합한 방법이라고 판단이 됐었다.

문자를 비교하고 변환하는 과정은 조건문과 대문자로 변환하는 uppercased() 메서드로 해결했다.


func solution(my_string: String, alp: String) -> String {
    return my_string.map { $0 == Character(alp) ? $0.uppercased() : String($0) }.joined()
}

구현 과정에서 중요한 점은

  • 문자열 비교를 위해 alpCharacter로 변환해야 한다는 점과,
  • map으로 변환된 결과는 배열 형태이기 때문에 joined()로 다시 문자열로 합쳐야 한다는 점이다.

이 방식은 조금 더 간결하고 고차 함수를 잘 활용했다는 점에서 만족스러웠다.


구현한 코드를 테스트하기 위해 검토를 해봤다.

print(solution(my_string: "hello", alp: "l")) // "heLLo"
print(solution(my_string: "swift", alp: "i")) // "swIft"
print(solution(my_string: "apple", alp: "p")) // "aPPle"

모든 테스트에서 기대한 결과가 출력되었다.

다양한 입력 값에 대해서도 잘 작동한다는 점을 확인했다.


음...

이번 문제를 통해 Swift에서 문자열을 다루는 방법과 고차 함수인 map의 활용법을 다시 한번 점검을 해볼 수 있었고..

조건문과 문자열 조작 같은 기본적인 작업도 간결하고 명확하게 작성하려는 노력이 중요하다는 점을 알게 된 것 같다.

profile
iOS 좋아. swift 좋아.

0개의 댓글

관련 채용 정보