오늘은 내가 알고리즘 문제를 풀면서 깨달았던 것들을 정리해보려고 한다!
check_str = "abcba"
for i in range(len(check_str)//2):
# 반복문~
회문에 관련된 알고리즘을 풀때는 전체 길이의 1/2만 검사하면 된다!
(어차피 앞뒤가 똑같기 때문에!)
혹은
check_str = "abcba"
if check_str == check_str[::-1]:
return True
로 작성하면 된다는 사실!! 완전 간편하다!👍
# 원래 리스트!
a = [1, 2, 3, 4, 5]
# 왼쪽으로 밀기?
a = [2, 3, 4, 5, 1]
# 오른쪽으로 밀기?
a = [5, 1, 2, 3, 4]
위와 같은 방법으로 만들고 싶을때 어떤 방법을 사용할 수 있을까??
나는 처음에 for
문으로 i
의 값을 len(a)
로 하고 step을 -1
로 해서 어려운 방법을 삥 돌아서 갔었는데, 다음과 같은 방법이면 훨씬 편하게 작성 할 수 있다!
# 왼쪽으로 밀기
a.append(a.pop(0))
# 오른쪽으로 밀기
a.insert(0, a.pop())
짜란😱👍
내가 풀었던 문제는 'A34BV1DSC6' 같은 문자열에서 문자는 오름차순으로 정렬하고, 숫자는 다 더해서 문자열 마지막에 넣는 문제였는데, 이 문제에서 어떻게 숫자만 골라 낼 수 있을까??
# 나의 방법
for x in check_str:
if ord('0') <= x <= ord('9'):
...
이러식으로 풀었었는데... isdigit
함수만 알면 된다! 반대로 문자열을 알아내는 방법의 함수는 isalpha()
가 있다! 두 함수 모두 return
은 True/False
로 한다.
# 더 좋은 방법
for x in check_str:
if x.isdigit():
...
훨씬 깔끔하다!
앞으로도 이러한 방법들을 꾸준히 알아나가서 공부 열심히 해야겠다!
a[::-1]
의 방법이 너무 간편하고 좋다는 점!insert
를 생각하지 못했는지... 😂isdigit()
, isalpha()
까먹지 말자!!역시 코딩의 세계에서 내가 아는 지식은 새발의 1 마이크로미터도 되지 않는구나..