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

수경·2022년 10월 27일
0

problem solving

목록 보기
54/174

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

문제

알파벳 소문자로만 이루어진 어떤 문자열에서, 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 외톨이 알파벳이라고 정의합니다.

1. 문자열 "edeaaabbccd" 를 예시로 들어보면,

  • a는 2회 이상 나타나지만, 하나의 덩어리로 뭉쳐있으므로 외톨이 알파벳이 아닙니다.
    "ede(aaa)bbccd"

  • b, c도 a와 같은 이유로 외톨이 알파벳이 아닙니다.

  • d는 2회 나타나면서, 2개의 부분으로 나뉘어 있으므로 외톨이 알파벳입니다.
    "e(d)eaaabbcc(d)"

  • e도 d와 같은 이유로 외톨이 알파벳입니다.

2. 문자열 "eeddee" 를 예시로 들어보면,

  • e는 4회 나타나면서, 2개의 부분으로 나뉘어 있으므로 외톨이 알파벳입니다.
    "(ee)dd(ee)"

  • d는 2회 나타나지만, 하나의 덩어리로 뭉쳐있으므로 외톨이 알파벳이 아닙니다.
    "ee(dd)ee"

문자열 input_string이 주어졌을 때, 외톨이 알파벳들을 알파벳순으로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요. 만약, 외톨이 알파벳이 없다면 문자열 "N" 을 return 합니다.

입출력 예시

input_stringresult
"edeaaabbccd""de"
"eeddee""e"
"string""N"
"zbzbz""bz"


풀이

  1. 인자로 받은 문자열 input_string 에서 어떤 알파벳이 어느 인덱스에 위치했는지 알기 위해 딕셔너리로 저장
    count = {alpha:list(idx)}

  2. 딕셔너리에 저장된 요소 중에 value의 길이가 2 이상인 요소들(알파벳이 여러번 나타나는 경우) 중 인접해있지 않은 인자들을 answer_list 에 저장

  3. answer_list 에 저장된 게 없으면 answer = N , 그렇지 않으면 answer_list를 정렬하고 문자열로 만들어서 answer 에 저장

  4. return answer



코드

def solution(input_string):
    answer = ''
    count = {}
    answer_list = []
    for idx, alpha in enumerate(input_string):
        if alpha not in count:
            count[alpha] = [idx]
        else:
            count[alpha].append(idx)
    
    for key, value in count.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 = ''.join(sorted(answer_list))
        
    return answer

오랜만에 프로그래머스에 들어갔는데 PCCP 시험 접수를 받는다고 광고가 떴다

이게 뭐지 싶어서 봤는데 프로그래머스에서 독자적으로 만든 코딩역량인증시험 이란다!!

우왕

신기하기도 하고 난이도가 궁금하기도 해서 모의고사 1번을 풀어봤다.

1번이라 그런지 어렵진 않았다,,, 하지만 뒤에는 어렵겠지?,,,

시험보면 나는 몇 점 나올라나 🥹
근데 4만원이라서 지금은 못보겠다 ㅎ.... 자바 열심히 하고 나중에 해봐야징

profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글