코드업 100제와 유형 문제를 풀면서 배운 점

오준혁·2023년 5월 12일
0

알고리즘

목록 보기
25/29

두서 없이 생각날 때마다 써둔 것이라 정리가 되어있진 않다.

  • "" 나 '' 안에 "" 나 '' 를 넣고 싶으면 \를 써줄 것
  • 코딩할때 = 주위에 공백을 넣어주고 tap 대신 스페이스 4번을 사용할 것
  • 입출력시 map(int,input().split()) 을 유용히 사용할 것.
  • 주석은 완전히 끝나는 문장으로 쓸 것
  • print 함수의 옵션 중 sep 이 있다. print(y,m,d,sep='-') -> y-m-d
  • format의 사용법을 알아두자.
    hap = 28
    print(format(hap/3,".2f"))
  • 16진수 입력 방법 n = int(input(),16)
  • 최소공배수 구하는 방법
    d = 1
    while d%a!=0 or d%b!=0 or d%c!=0 :
    d += 1
  • 바둑판에서 십자 뒤집기 할 때에는 줄이 입력되면 그때 바꿔주기
  • 2차원 list를 선언할 때에는 [[]*열의 수 for _ in range(행의 수)]
  • 다중 for 문 에서 break를 하면 한겹씩 탈출한다
  • 2차원 list를 선언할 때에는 입력 받는 형태에 따라서 잘 선택하는 것이 좋다 성실한 개미 참고
  • 재귀함수 -> 함수 안에서 함수를 호출 할때 변수는 n+1 보단 n-1로
  • 합이나 팩토리얼 -> n=n+재귀함수 or n*재귀함수
  • 피보나치가 커질수록 시간초과가 난다 해서 메모이 제이션을 이용한다 메모이제이션이란?
    호출 될 때마다 결과값을 배열 따위에 저장하여 효율성을 증대시키는 것
  • 2진수 반환 문제에선 재귀함수를 문자열로 뒤에 붙이는 식으로 활용할 수 있음
  • 역행 출력의 경우 print의 위치를 바꿔볼 생각ㅇㄹ 해보자
  • 선택 정렬 => 최솟값을 설정해서 앞으로 불러오는 것 범위가 앞에서 부터 줄어든다
    버블 정렬 => 옆에 값과 비교해서 큰값을 뒤로 보내는 것 범위가 뒤어서 부터 줄어든다
    병합 정렬 => 일단 반으로 나누고 배열 두개의 인덱스값만큼 검사하면서 정렬후 합치고 합치고 를 반복
    삽입 정렬 => 필요한 경우에만 위치를 바꾸는 것
  • 최대공약수를 구하는 알고리즘은 유클리드 호재법이 있다.
  • 약수 개수 시간 복잡도 n**2 -> 배수를 이용한 알고리즘 이용하기
  • 최소공배수를 구하는 알고리즘 은 두 수의 최대공약수로 두 수를 나눈 수들과 최대공약수의 곱임을 이용하면 된다
  • dfs bfs
  • 범위에 대해서 항상 이런 경우를 생각하지 말고 더 생각해보자

0개의 댓글