<코테 관련 느낌 메모>
- list[index+1]나 list[index-1] 처럼 다룰 때는 쉽게 out of index 나곤 함.
for문을 length - 1까지만 돌리는 것들이 하나의 방법이 됨 - ★★중요★★
코드 작성할 때 주의할 것은 경계값이다. 시작지점과 끝지점에서도 정상작동 하는지 체크하는 게 중요. 안그러면 IndexError: list index out of range 가 쉽게 난다.
ex. index가 0일때, 1일때 혹은 끝 인덱스일 때 등등. - 테스트 케이스에서 입력값이 1억처럼 큰 경우도 있으니 for문 돌릴 때 혹은 list 초기화 할 때 함부로 입력값만큼 돌리게끔 해놓으면 안됨 그럼 시간이나 메모리 초과 날 수도 있다.
- 3번과 같은 맥락으로, 그래서 무지성 리스트로 풀 게 아니라, 가지고 있는 값들을 어떻게 요리할지를 생각해야함. 이럴 땐 %와 //가 유용하게 사용될 수 있다.
- 마냥 코드만 맞는게 전부는 아니다. 2869 문제처럼 문제는 쉬운데 input값의 범위에 따라 시간초과/메모리 초과가 나는 경우를 생각해줘야한다.
- go to 구문같은게 필요한 상황이 왕왕 있는데 그럴 땐 for문의 변수 i를 밖에 놓는거임
i = 2
while n!=1:
if n % i == 0:
print(i)
n = n//i
else:
i+=1
이런식으로 놓고 탈출조건은 while문으로 설정, 변수 i의 증감은 안에서 조건에 따라 설정 - 리스트를 만드는 걸 조심해야한다. 보통 입력 범위가 커서 리스트를 만들면 그것 자체만으로도 시간초과나 메모리초과가 아주 쉽게 나는 것 같다.
- ★ 시간초과, 메모리초과 잡는 법은 따로 정리한 글을 참고.
- 항상 문제의 조건을 먼저 보는 습관을 들여야 한다. 범위가 작다면 풀 수 있는 방법이 꽤 여러가지 나오는 경우가 많은 것 같다. 값의 범위가 커질수록 한정적인 방법을 생각해서 풀어야하는 느낌이다.
- for문을 주의해야한다. 2중 for문의 경우 보통 시간복잡도가 O(n^2)인 경우가 많으므로 시간을 많이 잡아먹는다. 최대한 for문을 지양하는 것들을 생각해볼 필요가 있다.
반응형
'알고리즘 > 코테 개념, TIP, 메모' 카테고리의 다른 글
deque (0) | 2024.07.10 |
---|---|
Stack, Queue 요약 (0) | 2024.07.08 |
DFS / BFS 차이 (0) | 2023.02.04 |
구) 브론즈~실버 백준 다시 볼법한 문제 (0) | 2023.02.02 |
코딩테스트 시간초과 해결법 (백준) (0) | 2022.10.28 |