[프로그래머스] PCCP 모의고사 #1 ) 1번 - 외톨이 알파벳

김멉덥·2023년 11월 3일
0

알고리즘 공부

목록 보기
110/171
post-thumbnail
post-custom-banner

문제

프로그래머스 PCCP 모의고사 #1


코드 구현

from collections import Counter

def solution(input_string):
    answer = ''

    # 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 == 외톨이 알파벳
    # 외톨이 알파벳 예시
    # "e(d)eaaabbcc(d)"
    # "(ee)dd(ee)"

    input_alpha = sorted(list(Counter(input_string).keys()))    # input_string에 있는 알파벳 종류들을 담은 list 생성
    # (정답을 알파벳 순으로 내줘야하기 때문에 미리 정렬하기)
    # print(input_alpha)

    for i in range(len(input_alpha)):
        index_check = []
        for j in range(len(input_string)):
            if (input_string[j] == input_alpha[i]):     # 알파벳 종류가 확인되면 해당 알파벳의 인덱스 번호를 다 담아두기
                index_check.append(j)

        for c in range(len(index_check)):       # 담아둔 인덱스 번호를 돌 때, 하나라도 인덱스 번호가 연속된게 없다면 -> 외톨이 알파벳
            if (c + 1 == len(index_check)):
                break
            if (index_check[c] + 1 != index_check[c + 1]):
                answer += input_alpha[i]
                break

    if (len(answer) == 0):      # 아무것도 안담겼으면 외톨이 알파벳이 없음 N
        answer = "N"

    return answer

풀이

  • 같은 종류의 알파벳이 연속하더라도 하나의 덩어리로 붙어있으면 안되고 2개의 부분으로 찢어져 있어야 한다.
  • 우선 알파벳의 종류를 담은 리스트 input_alphaCounter를 통해서 만들어주고 → 이를 정렬한다
  • input_alpha을 돌면서 입력된 문자열의 알파벳을 하나씩 꺼내며 비교 → 해당 알파벳의 문자열 내 인덱스 값을 모두 index_check에 담아둔다.
  • index_check의 인덱스 번호들을 돌면서 숫자가 단 한번이라도 연속되는 수가 안나오면 → 외톨이 알파벳임 (두 인덱스가 어쨋든 간격을 두고 떨어져있다는 뜻이니까!)

profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글