[Programmers] 외톨이 문자

최대 1 분 소요

문제

출처: https://school.programmers.co.kr/learn/courses/15008/lessons/121683


풀이

def solution(input_string):
        
    char_dict = {}
    prev = ''
    for i, v in enumerate(input_string):
        
        # 뭉쳐서 등장한 경우는 체크하지 않음
        if v == prev:
            continue
            
        # 문자별 첫 등장 위치 기록
        if v not in char_dict:
            char_dict[v] = []
        char_dict[v].append(i)        
        prev = v

    answer = "".join(sorted([k for k in char_dict if len(char_dict[k]) >= 2]))
    
    return answer if answer else "N"


다른 사람의 풀이

출처: https://school.programmers.co.kr/learn/courses/15008/lessons/121683/solution_groups?language=python3

def solution(input_string):
    answer = set()
    alphabets = set([input_string[0]])
    prev = input_string[0]
    for s in input_string[1:]:
        if s != prev and s in alphabets:
            answer.add(s)
        alphabets.add(s)
        prev = s

    if answer:
        answer = ''.join(sorted(list(answer)))
    else:
        answer = 'N'
    return answer


hit count image

댓글남기기