본문 바로가기
코딩테스트/Python

[python] pccp 모의고사 1 외톨이 알파벳

by nahkim 2023. 3. 18.

📜 접근 방법

특정 문자가 연속되지 않을 경우 외톨이 알파벳이라고 판단

무조건 하나의 덩어리로 뭉쳐있어야함!

  1. 딕셔너리에 특정 문자 갯수를 넣어줌 (key : value) 
    key는 특정 문자, value는 특정 문자 갯수
  2. 주어진 문자열 수만큼 반복
    1. 특정 문자의 갯수가 2 이상일 경우
      1. 특정 문자의 갯수만큼 반복문을 돌리는데 연속되게 문자가 나온다면 외톨이가 아닌걸로 판단
        1. 이 문자는 판단되었으니 갯수를 -1로 변경하여 더이상 확인하지 않게함
      2. 특정 문자의 갯수만큼 반복문을 돌리는데 연속되게 문자가 나오지 않으면 외톨이로 판단
        1. answer에 넣어주고 이 문자는 판단되었으니 갯수를 -1로 변경하여 더이상 확인하지 않게함
  3. answer이 빈 문자열이면 주어진 문자열에 외톨이 알파벳이 없으므로 N을 추가

 

 

✅ 정답 코드

def solution(input_string):
    answer = ''
    dict_ = {}
    
    # 딕셔너리
    for i in range(len(input_string)):
        if input_string[i] in dict_:
            dict_[input_string[i]] += 1
        else:
            dict_[input_string[i]] = 1

	# 주어진 문자 갯수만큼 반복
    for i in range(len(input_string)):
        
        # 이미 검사한 경우
        if dict_[input_string[i]] == -1:
            continue
        elif dict_[input_string[i]] > 1:
        	# 연속된 문자인지 확인
            for j in range(dict_[input_string[i]]):
                if input_string[i] != input_string[i + j]:
                    answer += input_string[i]
                    break
            dict_[input_string[i]] = -1
    
    if answer == "":
        return "N"
    
    answer = "".join(sorted(answer))
    return answer

 

💡알게 된점

저번에 풀땐 못풀었는데 다시 생각해보고 방식을 바꿨더니 풀렸다. 문자열을 정렬할 경우 join과 sorted 잊지 말기!