본문 바로가기
  • 시 쓰는 개발자
알고리즘/메모

코딩 문제들 느낀점

by poetDeveloper 2022. 11. 17.

<코테 관련 느낌 메모>

  1. list[index+1]나 list[index-1] 처럼 다룰 때는 쉽게 out of index 나곤 함.
    for문을 length - 1까지만 돌리는 것들이 하나의 방법이 됨
  2. ★★중요★★
    코드 작성할 때 주의할 것은 경계값이다. 시작지점과 끝지점에서도 정상작동 하는지 체크하는 게 중요. 안그러면 IndexError: list index out of range 가 쉽게 난다.
    ex. index가 0일때, 1일때 혹은 끝 인덱스일 때 등등. 
  3. 테스트 케이스에서 입력값이 1억처럼 큰 경우도 있으니 for문 돌릴 때 혹은 list 초기화 할 때 함부로 입력값만큼 돌리게끔 해놓으면 안됨 그럼 시간이나 메모리 초과 날 수도 있다.
  4. 3번과 같은 맥락으로, 그래서 무지성 리스트로 풀 게 아니라, 가지고 있는 값들을 어떻게 요리할지를 생각해야함. 이럴 땐 %와 //가 유용하게 사용될 수 있다.
  5. 마냥 코드만 맞는게 전부는 아니다. 2869 문제처럼 문제는 쉬운데 input값의 범위에 따라 시간초과/메모리 초과가 나는 경우를 생각해줘야한다.
  6. go to 구문같은게 필요한 상황이 왕왕 있는데 그럴 땐 for문의 변수 i를 밖에 놓는거임

    i = 2
    while n!=1:
        if n % i == 0:
            print(i)
            n = n//i
        else:
            i+=1
    이런식으로 놓고 탈출조건은 while문으로 설정, 변수 i의 증감은 안에서 조건에 따라 설정
  7. 리스트를 만드는 걸 조심해야한다. 보통 입력 범위가 커서 리스트를 만들면 그것 자체만으로도 시간초과나 메모리초과가 아주 쉽게 나는 것 같다.
  8.  ★ 시간초과, 메모리초과 잡는 법은 따로 정리한 글을 참고.
  9. 항상 문제의 조건을 먼저 보는 습관을 들여야 한다. 범위가 작다면 풀 수 있는 방법이 꽤 여러가지 나오는 경우가 많은 것 같다. 값의 범위가 커질수록 한정적인 방법을 생각해서 풀어야하는 느낌이다.
  10. for문을 주의해야한다. 2중 for문의 경우 보통 시간복잡도가 O(n^2)인 경우가 많으므로 시간을 많이 잡아먹는다. 최대한 for문을 지양하는 것들을 생각해볼 필요가 있다.

'알고리즘 > 메모' 카테고리의 다른 글

DFS / BFS 차이  (0) 2023.02.04
구) 브론즈~실버 백준 다시 볼법한 문제  (0) 2023.02.02
코딩테스트 시간초과 해결법 (백준)  (0) 2022.10.28