한 번만 등장한 문자
문제 설명
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해 보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
제한 사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
입출력 예
s | result |
"abcabcadc" | "d" |
"abdc" | "abcd" |
"hello" | "eho" |
입출력 예 설명
입출력 예 #1
- "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.
입출력 예 #2
- "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.
입출력 예 #3
- "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.
제출
import Foundation
func solution(_ s:String) -> String {
var alphabet = [String: Int]()
for i in s.map{String($0)}{
alphabet[i ,default: 0] += 1
}
return alphabet.filter{$0.value == 1}.keys.sorted(by: <).joined()
}
알파벳을 key로 갖고 등장 횟수를 value로 갖는 딕셔너리 변수 alphabet을 선언한다.
입력받은 문자열을 배열로 변환해 각 알파벳을 alphabet 변수에 넣고, value를 1씩 증가시킨다.
filter함수를 사용해 value가 1인 (1번만 등장한 경우) key들을 구하고, 정렬한 후 joined 함수를 사용해 String 형으로 반환한다.
다른 풀이
import Foundation
func solution(_ s: String) -> String {
return Dictionary(grouping: Array(s).map(String.init), by: { $0 }).filter { $0.value.count <= 1 }
.keys
.sorted(by: <)
.joined()
}
입력받은 문자열을 배열로 변환해 각 요소 값을 기준으로 딕셔너리형으로 grouping 한다.
filter 함수를 사용해 value의 개수가 1 이하인 key를 구한 후, 정렬하고 joined 함수를 사용해 String 형으로 반환한다.
반응형
'📖 Coding Test > Programmers LV.0' 카테고리의 다른 글
[프로그래머스 LV.0] 편지 (0) | 2023.01.11 |
---|---|
[프로그래머스 LV.0] 약수 구하기 (0) | 2023.01.11 |
[프로그래머스 LV.0] 인덱스 바꾸기 (0) | 2023.01.10 |
[프로그래머스 LV.0] 영어가 싫어요 (0) | 2023.01.10 |
[프로그래머스 LV.0] 대문자와 소문자 (0) | 2023.01.09 |
댓글