[Swift/프로그래머스] 문자 리스트를 문자열로 변환하기

sonny·2024년 11월 3일
1

TIL

목록 보기
30/48

나의 답)

import Foundation

func solution(_ arr:[String]) -> String {
   return arr.joined(separator: "")
}

검색의 발단

사실 이것도 뭔가 메서드를 이용하는게 아닐까.. 하고 파이썬으로 푸는 방법을 검색해봤다.

근데 파이선에서는 join 이라는 메서드로 이용하길래

파이썬이랑 swift는 비슷하니 구글에 검색해봤더니,

바로 joined 메서드가 나왔다.

공식문서까지 확인하니 매우 흡사.. 아니 똑같았다.

< joined > 메서드의 활용

[ 공식문서 ]

내용을 번역 해봤다.

시퀀스의 요소를 연결하고 각 요소 사이에 주어진 구분 기호를 추가하여 새로운 문자열을 반환합니다. 라고 한다

.....음. 역시 코드를 직접 써봐야겠다.

예시코드를 가져온 걸 이모지 변경만 해보았다. 잘 나온다.

보니까 separator 값 안에 뭔가를 넣으면 문자열마다 들어가는 것 같다.

알아보니,

separator 파라미터는 joined(separator:) 메서드에서 각 요소 사이에 삽입할 구분 문자열을 지정하는 데 사용된다고 한다.

이 파라미터를 통해 각 요소가 특정 문자열로 구분되어 연결되게 할 수 있는데,

예를 들자면 요소들을 쉼표나 공백, 또는 나처럼 이모지로 나눠 연결하고자 할 때 활용되는 것이다.

이제 이모지를 빼고 빈 공백 없이 "" 만 했더니,

오오..... 코딩테스트에서 원하는 답과 똑같이 나왔다.

바로 적용해보자.

리턴값에 넣기만 하면 될 것 같다.

아 굿 !!

아 그리고 joined()는 컬렉션 요소가 문자열일 때만 사용 가능하다고 하니,

만약 다른 타입 (Int나 Double) 의 배열을 연결하려면 먼저 문자열 배열로 변환해야 한다고 한다.

Int는 비문자열이란다.

만약 String 배열인 ["a", "b", "c"] 같은 경우는 joined() 메서드를 바로 사용할 수 있지만,

Int 배열 [1, 2, 3]과 같은 비문자열 타입 배열에서는 바로 사용할 수 없다..

이유는 joined() 메서드가 각 요소를 하나의 문자열로 합치는 작업을 수행하기 때문에 요소들이 미리 문자열 이어야 한다는 이유인 것이다.

만약 문자열이 아닌 타입의 배열에 joined() 를 사용하면 컴파일 오류가 발생한다.

삐 - !

고차함수 Map을 이용하면 간단해.

만약 내가 Int 배열이나 다른 타입의 배열을 joined() 로 연결하고 싶다면 ..!

각 요소를 먼저 문자열로 변환해줘야 한다.

이 땐 고차함수인 map을 사용해 배열의 각 요소를 문자열로 변환한 후,

joined() 메서드를 사용할 수 있다!

let numbers = [1, 2, 3]

let stringNumbers = numbers.map { String($0) }
let joinedString = stringNumbers.joined(separator: "🥸")

print(joinedString)  // "1🥸2🥸3"

numbers.map { String($0) } 를 사용하여 Int 배열 [1, 2, 3]["1", "2", "3"] 으로 변환해준 뒤,

그 후 는 새로운 함수를 만들어 stringNumbers.joind() 메서드를 이용했다.

추후 비슷한 문제가 나오면 그 땐 바로 응용 할 수 있을 것 같다.


음...

검색으로 발견한 joined 메서드를 이해하고 배열 요소를 하나의 문자열로 합치는 방법을 배우게 되었는데,

separator 파라미터로 문자열을 설정해 각 요소 사이에 특정 구분자가 들어가도록 만들 수 있음을 알게 되었다.

문자열이 아닌 타입의 배열을 joined() 메서드로 연결하려면, 먼저 배열을 문자열로 변환해야 한다는 것도 배웠다.

그래서 joined 메서드가 다른 타입을 문자열로 변환해야 하는 상황을 자세히 이해해보고 싶었다.

그러다 { String($0) } 구문을 통해 쉽게 변환할 수 있다는 걸 알게 되었는데,

map을 사용해 String()으로 감싸기만 해도 문자열로 변환되었다는 사실도 신기했다.

이렇게 간단할수가..

앞으로 배열의 요소를 연결할 때 joined() 를 활용하면 이런식의 문제가 나올 땐 자신감이 붙을 것 같다!

계속 코테를 풀면서 다양한 타입 변환 메서드들도 알고 싶고 배우고 싶은 날이다.

profile
iOS 좋아. swift 좋아.

0개의 댓글