Lv0. 한 번만 등장한 문자

zz·2023년 3월 3일
0

프로그래머스

목록 보기
18/36

[한번만 등장한 문자]

문제 설명

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

제한사항

  • 0 < s의 길이 < 1,000
  • s는 소문자로만 이루어져 있습니다.

입출력 예

sresult
"abcabcadc""d"
"abdc""abcd"
"hello""eho"

풀이

내 풀이

import numpy as np

def solution(s):
    answer = ''
    s_sort = sorted(s)
    letters, counts= np.unique(s_sort, return_counts= True)
    for i in range(len(letters)):
        if counts[i]==1:
            answer += letters[i]
    return answer

뭘까... 뭔가 해냈지만 짜잔 하고 해낸게 아니라 얼레벌레 해낸거같은 느낌은..
처음에 조건을 잘못읽고 unique 한걸 고르라는줄 알고 뭐야 쉬운데? 이러면서 대충 했는데 이게 아니었던거지
queue를 쓰면 되나? 싶다가도 그러면 해결이 안돼서 unique를 사용했다


해결하는 것만 일이 아니라 해결하고 나서도 다른 사람들 풀이를 꼭 확인하는데 그럼 여러가지 댓글이 달려있다 현업에서는 이 함수 쓰면 안된다는등등.. 어렵다...........................

다른 사람 풀이 1

def solution(s):
    answer = "".join(sorted([ ch for ch in s if s.count(ch) == 1]))
    return answer

in s 대신 in set(s)를 사용하면 중복 조회를 줄일 수 있다는 게 다른 의견이었는데 좋은 것 같다 범위를 줄여가는 것이 중요하니까

다른 사람 풀이 2

from collections import Counter

def solution(s):
    counter = Counter(s)
    unqiue_alphabets = filter(lambda alphabet: counter[alphabet] == 1, counter.keys())
    return ''.join(sorted(unqiue_alphabets))

프로그래머스를 하다보면 다른 사람들의 코드를 필연적으로 보게 되는데 그럴때마다 collections는 거의 빠지지 않고 나온다 학교에서는 잘 쓸 일이 없던 모듈이어서 몰랐나 공부해봐야겠따

profile
응애 나 애기개발자

0개의 댓글