알파벳 소문자로만 이루어진 어떤 문자열에서, 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 외톨이 알파벳
이라고 정의합니다.
문자열 "edeaaabbccd"를 예시로 들어보면,
외톨이 알파벳
이 아닙니다."ede(aaa)bbccd"
외톨이 알파벳
이 아닙니다.외톨이 알파벳
입니다."e(d)eaaabbcc(d)"
외톨이 알파벳
입니다.문자열 "eeddee"를 예시로 들어보면,
외톨이 알파벳
입니다."(ee)dd(ee)"
외톨이 알파벳
이 아닙니다."ee(dd)ee"
문자열 input_string
이 주어졌을 때, 외톨이 알파벳
들을 알파벳순으로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요. 만약, 외톨이 알파벳
이 없다면 문자열 "N"
을 return 합니다.
input_string
의 길이 ≤ 2,600input_string
은 알파벳 소문자로만 구성되어 있습니다..input_string | result |
---|---|
"edeaaabbccd" | "de" |
"eeddee" | "e" |
"string" | "N" |
"zbzbz" | "bz" |
from collections import defaultdict
def solution(input_string):
answer = ''
alone = defaultdict(list)
for idx,alphabet in enumerate(input_string):
if alphabet not in alone:
alone[alphabet] = [idx]
else:
alone[alphabet].append(idx)
answer_list = []
for key,value in alone.items():
if len(value) >= 2:
for i in range(len(value)-1):
if abs(value[i]-value[i+1]) > 1:
answer_list.append(key)
break
if len(answer_list) == 0:
answer = "N"
else:
answer_list.sort()
answer = ''.join(answer_list)
return answer