[Algorithm] 반복되지 않는 문자 (python)

19·2022년 8월 1일
0

Algorithm

목록 보기
4/28
post-custom-banner

Q. 다음과 같이 영어로 되어 있는 문자열이 있을 때, 이 문자열에서 반복되지 않는 첫번째 문자를 반환하시오. 만약 그런 문자가 없다면 _ 를 반환하시오.

def find_not_repeating_first_character(string):
    # 빈도수 구하기
    alphabet_array = [0] * 26

    for alphabet in string:
        if alphabet.isalpha():
            alphabet_index = ord(alphabet) - ord("a")
            alphabet_array[alphabet_index] += 1

    # 빈도수를 구한 배열을 이용해서, 중복되지 않은 문자 도출
    no_dup_alphabet_array = []
    for index in range(len(alphabet_array)):
        current_occurrence_alphabet = alphabet_array[index]
        if current_occurrence_alphabet == 1:
            no_dup_alphabet_array.append(chr(index + ord("a")))

    # 문장중에 중복되지 않은 문자의 처음값 출력
    for char in string:
        if char in no_dup_alphabet_array:
            return char

    return "_"

result = find_not_repeating_first_character
print("정답 = d 현재 풀이 값 =", result("abadabac"))
print("정답 = c 현재 풀이 값 =", result("aabbcddd"))
print("정답 =_ 현재 풀이 값 =", result("aaaaaaaa"))
  • 알파벳 빈도수를 구해서 배열에 담았다
  • 구한 배열을 활용해서 중복되지 않은 알파벳을 도출했다.
    • 빈도수가 2 이상이면 중복되었다는 뜻, 1이면 중복되지 않았다는 뜻

[출력]
정답 = d 현재 풀이 값 = d
정답 = c 현재 풀이 값 = c
정답 =_ 현재 풀이 값 = _
profile
하나씩 차근차근
post-custom-banner

0개의 댓글