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

원준·2023년 4월 21일
0

코딩 테스트

목록 보기
5/18

PCCP 모의고사 1회 - 외톨이 알파벳을 풀이 해봤다.
실력이 낮아 물론 바로 정답은 맞출수는 없었지만, 내가 했던 방법과 정답의 방법이 조금 다르게 만들어진 것에 재미를 느낄수 있었다.

1. 문제 설명

1-1. 입출력 예)

2. 내가 한 방법

  • 해당 문제를 보고 먼저 든 생각은 연속되는 알파벳에 따라 List로 잘라내어 2칸씩 비교 하여 있으면 값을 반환하고, 없으면 아무것도 안하도록 설정 했다.
  • 실제로 사용했을때 값을 정상적으로 들고 왔고, 중복된 알파벳도 들고 왔지만 set()을 이용해 중복된 것을 없에고 sorted(list())를 통해 정렬한 후 join()을 마지막으로 합쳐서 값을 넘겼다.
  • 코드 실행을 통해 테스트와 임의로 넣은 값에 대해서는 오류가 없었지만, 채점에는 오류가 발생하였다.
    • 이로 인해, 내가 한 방법이 아닌것을 알았지만 다른 방법은 생각이 나지 않아 찾아 보았다.
def solution(input_string):
    answer = ''
    
    input_list = list()
    i = 0
    while i < len(input_string):
        count = 0
        input_str = input_string[i]
        for s in range(i+1, len(input_string)):
            if input_string[i] == input_string[s]:
                input_str += input_string[s]
                count += 1
            else:
                break
        input_list.append(input_str)
        i += 1 + count
        
    for s_1 in range(len(input_list)-2):
        for s_2 in range(s_1+2, len(input_list)):
            if input_list[s_1] == input_list[s_2]:
                answer += input_list[s_1]
                break

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

3. 찾아낸 방법

  • 찾아낸 방법에는 다른 방법이 있었다.
    • enumerate() 사용
      • 중복된 알파벳을 key로 설정하고, 중복된 알파벳의 위치를 value로 저장 하는 방법으로 이용되었다.
# 외톨이 알파벳
def solution(input_string):
    answer = ''
    
    result = {}
    answer_string = []
    
    for idx, in_str in enumerate(input_string):
        if in_str not in result:
            result[in_str] = [idx]
        else:
            result[in_str].append(idx)
    
    for key, value in result.items():
        if len(value) >= 2:
            for i in range(len(value)-1):
                if abs(value[i]-value[i+1]) > 1:
                    answer_string.append(key)
                    break

    return 'N' if len(answer_string) == 0 else ''.join(sorted(answer_string))

4. 차이점

  • 2가지의 차이점에 대해 생각하며 작성하고 있고, 약간의 생각 차이가 있었던거 같다.

    1. 내가 한 방법

    • 연속된 알파벳이 있다면 다른 알파벳으로 취급해서 해당 하지 않는 알파벳으로 지정했다.
    • "abaa"와 같은 방법에서 "aa"는 연속된 알파벳이라, 내가 생각했던건 "a"자체에 대해 한번 연속되었으니 외톨이가 아닌것으로 생각했다.

    2. 찾아낸 방법

    • 찾아낸 방법에서는 앞에, 뒤에 연속된 알파벳이 있어도 같은 알파벳이 다른 위치에 있다면 외톨이 알파벳으로 취급되는듯 하다.

    3. 느낌

    • 해석의 차이로 생각되며, 내가 한번더 생각하고 다른 방법으로 했으면, 가능했을 것이라 생각한다.
    • 코딩 테스트에 대해 조금더 해보고 다른 방법에 대해 더 연구해 봐야겠다.
profile
공부해보자

0개의 댓글