한 번만 등장한 문자
2024. 9. 11. 18:00ㆍ코딩테스트 입문
https://school.programmers.co.kr/learn/courses/30/lessons/120896
문제 설명
문자열 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 합니다.
문자열 s에서 단 한 번만 등장한 문자들만 추려서 사전순으로 출력하는 문제입니다.
이런 문제를 볼 때마다 항상 count를 사용하면 몇 번 등장했는지 알 수 있겠다고는 생각이 드는데, 매번 Counter 패키지를 사용합니다.
이번에도 파이썬의 두 가지 방법으로 문제를 풀어보겠습니다.
1. Counter 사용
from collections import Counter
def solution(s):
# 문자열에 Counter을 적용합니다.
cnt = Counter(s)
# 1번만 등장한 문자들을 사전 순으로 정렬하고, join을 사용해 합칩니다.
answer = ''.join(sorted([c for c, n in cnt.items() if n == 1]))
return answer
2. count 사용
def solution(s):
# 문자열 s의 각 요소를 c로 불러옵니다.
# count(c)의 결과가 1일 때만 리스트에 추가합니다.
# 리스트를 사전 순으로 정렬하고, join을 사용해 합칩니다.
answer = ''.join(sorted([c for c in s if s.count(c) == 1]))
return answer
Counter 패키지를 쓰는 버릇이 아직도 남아있네요.
전 아래 쪽이 내장 함수만으로 만들었다는 점에서 더 완성도가 높다 생각합니다.