본문 바로가기
IT/algorithm

[programmers] '한 번만 등장한 문자' 문제 해설 및 정답코드

by Echinacea 2025. 3. 19.
반응형



✅ 문제 설명

문자열 s가 주어졌을 때, 한 번만 등장하는 문자들을 찾아 사전순으로 정렬한 문자열을 반환하는 프로그램을 작성합니다. 만약 한 번만 등장하는 문자가 없다면 빈 문자열을 반환합니다.


 

 

🔍 핵심 개념

 

1️⃣ 딕셔너리(Dictionary)란?

딕셔너리는 키(key)와 값(value) 쌍으로 데이터를 저장하는 자료구조입니다.

my_dict = {'a': 1, 'b': 2}
print(my_dict['a'])  # 1

📌 딕셔너리를 사용하면 문자 등장 횟수를 저장할 수 있습니다.


 

2️⃣ dict.get(key, default) 함수 이해

dict.get()은 딕셔너리에서 특정 키의 값을 가져오는 함수입니다.

  • 키가 존재하면 그 값을 반환
  • 키가 없으면 기본값(default)을 반환
my_dict = {'a': 1}

print(my_dict.get('a', 0))  # ✅ 1 (key 'a'가 존재)
print(my_dict.get('b', 0))  # ✅ 0 (key 'b'가 없으므로 기본값 반환)

📌 get()을 사용하면 KeyError 없이 안전하게 값을 가져올 수 있습니다.


 

3️⃣ +1이 필요한 이유

문자가 등장할 때마다 기존 값에 +1을 더해서 등장 횟수를 증가시킵니다.

for char in s:
    count[char] = count.get(char, 0) + 1

📌 +1을 하지 않으면 등장 횟수가 증가하지 않고 모든 값이 0이 됩니다.

 

💡 예제 실행 ("hello")

문자 count.get(char, 0) 값 업데이트된 count

'h' 0 → 0 + 1 = 1 {'h': 1}
'e' 0 → 0 + 1 = 1 {'h': 1, 'e': 1}
'l' 0 → 0 + 1 = 1 {'h': 1, 'e': 1, 'l': 1}
'l' 1 → 1 + 1 = 2 {'h': 1, 'e': 1, 'l': 2}
'o' 0 → 0 + 1 = 1 {'h': 1, 'e': 1, 'l': 2, 'o': 1}

 

✅ 최종 결과:

{'h': 1, 'e': 1, 'l': 2, 'o': 1}

 

 

🛠 문제 해결 코드

def solution(s):
    count = {}  # 문자 개수를 저장할 딕셔너리
    
    for char in s:  # 문자열을 한 글자씩 반복
        count[char] = count.get(char, 0) + 1  # 등장 횟수 증가
    
    unique_chars = []  # 한 번만 등장한 문자를 저장할 리스트
    for char in s:
        if count[char] == 1:
            unique_chars.append(char)
    
    return "".join(sorted(unique_chars))  # 사전 순 정렬 후 문자열 변환

 

📌 실행 예제 및 결과

print(solution("abcabcadc"))  # "d"
print(solution("abdc"))  # "abcd"
print(solution("hello"))  # "eho"
print(solution("aabbcc"))  # "" (한 번만 등장하는 문자가 없음)

 

 

 

🔥 정리

개념 설명

딕셔너리(Dictionary) 키-값 쌍으로 데이터를 저장하는 자료구조
dict.get(key, default) 키가 없으면 기본값 반환하여 KeyError 방지
+1 연산의 필요성 문자가 등장할 때마다 등장 횟수를 증가
사전 순 정렬 sorted()를 사용하여 정렬 후 문자열 변환

 

반응형

댓글