파이썬 알고리즘-11~21(탐색) 배운 것 정리

jiffydev·2020년 8월 30일
0

Algorithm

목록 보기
23/92

11. 회문 문자열 검사

  • 회문 판별에서는 글자의 길이와 상관 없이 길이//2만큼 반복문을 실행하여 처음+i 끝-i 을 반복해서 비교해주면 된다.

12. 숫자만 추출

  • isdecimal()함수를 사용해 0~9까지의 숫자인지 확인한다.
  • 숫자의 자리수를 늘려갈 때는 res=res*10 + 숫자 를 사용한다.

13. 카드 역배치

  • 스왑(a,b=b,a)를 이용해 양 끝의 숫자끼리 차례로 바꿔준다.

14. 두 리스트 합치기

  • 각 리스트의 인덱스를 포인터로 가정하여 차례로 크기를 비교해간다.
  • 크기를 비교한 후 나머지는 슬라이싱으로 끝까지 append한다.

15. 수들의 합

  • 0번째에 lt 1번째에 rt를 놓고 합을 0번째 값으로 초기화한다.
  • 합이 목표값보다 작으면 rt번째 값을 더해주고 한칸 오른쪽으로, 반대의 경우에는 lt번째 값을 빼주고 왼쪽으로, 같으면 cnt+1 후 lt번째 값을 빼고 왼쪽으로 이동한다.

16. 격자판 최대합

  • 행-열의 관계는 a[i][j] - a[j][i]이므로 같은 반복문으로 행의 합 열의 합을 구할 수 있다.
  • 대각선은 a[i][i] 또는 a[i][n-1-i]이다.

17. 사과나무

  • 처음과 끝의 인덱스를 중간부터 시작해서 반복문이 돌 때마다 start를 왼쪽으로 1칸 end를 오른쪽으로 1칸 움직이는데, 중간의 행이 되면 반대로 start를 오른쪽으로 1칸 end를 왼쪽으로 1칸 움직인다.

18. 곶감

  • 리스트 회전(처음/끝 원소를 끝/처음으로 이동)은 pop/insert를 사용해 pop한 것을 insert해준다.
  • 모래시계 모양으로 더해나가는 것은 다이아몬드와는 반대로 양 끝에서 시작한다.

19. 봉우리

  • 행렬의 주변을 0으로 둘러싸는 방법은 [0]을 insert, append로 앞뒤에 붙여주고 반복문을 통해 각 행의 양 끝에 0을 붙여준다.
  • 원소의 상하좌우를 비교하는 방법은 dx=[-1, 0, 1, 0] dy=[0, 1, 0, -1]를 만들고, lst[i+dx][j+dy]를 사용해 비교한다.
  • 모든 조건이 참일 때: all()을 쓰면 인자가 모두 참일 때만 True가 된다.

20. 스도쿠

  • 체크리스트와 그 인덱스를 사용, 인덱스 번호에 해당하는 숫자가 하나씩 있을 때 1로 만들어 줌으로써 합이 9가 되면 1~9가 모두 존재하는 것이 된다.

21. 격자판 회문수

profile
잘 & 열심히 살고싶다

0개의 댓글