Practice/알고리즘

파이썬 알고리즘: 회문 문자열

밍미a 2023. 1. 10. 01:14
728x90

알고 넘어가야 할 이론:

1. 회문의 개념 : 회문이란 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 문자열(sequence of characters) 등을 뜻한다.

2. 양수 인덱스와 음수 인덱스의 개념:

 

문자열도 양수와 음수 인덱스로 값을 찾을 수 있다. 예를 들어 a = "Hello"라는 문자열이 있으면

a[0] 은 H이고, a[-1]은 o이다. a[1]은 e이며, a[-2]는 l 이다.

 


오늘 공부한 내용

더보기

문제: 

내가 생각한 문제풀이 : 

일단 회문을 검사할 때 대소문자를 구분하지 않는다고 했으니까 upper()함수를 사용할 것 같다.

회문 문자열이라는 게 앞 뒤 문자를 비교했을 때 서로 같은 것이니까 

문자열의 길이에서 나누기 2를 해준 것만큼  for문을 돌려서

인덱스 0 이랑 인덱스 -1이랑 비교해주면 될 것 같다고 생각했다.

따라서 

def 회문(x):
    statuse = False
    for a in range(len(x)//2):
        if x[a] == x[-a-1] :
            statuse = True
        else:
            statuse = False
            return "No"
    if statuse == False :
        return "No"
    else:
        return "Yes"

def solution(n,arr):
    answer = []
    for a in arr:
        a = a.upper()
        answer.append(회문(a))

    return answer

이렇게 코드를 짰다.


느낀점

오랜만에 인프런 강의를 다시 듣기 시작했다. 

알고리즘 스터디를 하면서 점점 조금씩 한계가 보이는 것 같아서 바빠서 못 듣던 강의를 다시 들었는데

생각보다 문제가 쉽게 풀렸다. 

처음 이 강의를 들었을 때는 문제를 이해도 못해서 쩔쩔 매었는데  이번에는 스스로 풀 수 있게 되었다. 심지어 정답도 맞았다. 확실히 꾸준히 하니까 성과가 보인것 같아서 뿌듯했다