TIL_8 | 알고리즘에 관한 여러가지 TIP 1
오늘은 내가 알고리즘 문제를 풀면서 깨달았던 것들을 정리해보려고 한다!
어떤 것들을 정리??
- 회문
- 리스트 오른쪽/왼쪽으로 밀기
- 숫자뽑기
회문: 앞뒤가 똑같은 전화번호 아닌 String!
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():
...
훨씬 깔끔하다!
앞으로도 이러한 방법들을 꾸준히 알아나가서 공부 열심히 해야겠다!
Today, Learned
배운점
- 회문의 경우
a[::-1]
의 방법이 너무 간편하고 좋다는 점! - 리스트 미는 문제에서 왜
insert
를 생각하지 못했는지... 😂 isdigit()
,isalpha()
까먹지 말자!!
느낀점
- 내장함수.. 더 많이 알아봐야겠다!
- 나의 생각을 뒤집어 보기!
오늘의 한마디
역시 코딩의 세계에서 내가 아는 지식은 새발의 1 마이크로미터도 되지 않는구나..
Author And Source
이 문제에 관하여(TIL_8 | 알고리즘에 관한 여러가지 TIP 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@code_sign/TIL8-알고리즘에-관한-여러가지-TIP-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)