Algorithm-lecture-01
2021, Mar 30
알고리즘 오류가 나는 이유
피보나치 수
- overflow , 자료형의 크기가 제한
- n=90일경우, 자료형 크기에 대해 생각을 해봐야한다
- 파이썬은 자료형 걱정안해도 됨(정수 크기 제한 없음) 자바와 C는 걱정해야한다
- C++은 오버플로의 행동이 정의 되어 있지 않음 / Java는 행동이 정의 되어 있음
단어공부 (1157) ,퇴사 (14501)
- .length() 모두 다(Java,C++,Python) 시간이 O(1)
- 같은 값을 여러번 호출하는건 불 필요하다
- 시간초과 : 중복계산
- 메모리초과 : 다 저장 (불필요한거 저장)
시간초과
- Java에서 String의 += 연산은 O(n^2) 이다
- 새로운 객체를 만들어야 하기 때문이다
- Java는 StringBuilder나 BufferedWriter를 사용한다
- dp나 소수문제에 test case에 있을 경우 먼저 값을 미리 구해놓고 해당하는 n의 값을 출력하기
런타임 에러
- 테스트할 때 경계값 꼭 넣어보기
- 음수인지 아닌지도 파악해보기
자바의 장점
- 초기화가 잘 되어있다? ㅎㅎ
- C++은 초기화 해줘야한다
그냥 적기 / 디버깅 팁
- 투포인터는 모두 다 양수일 경우만 사용할 수 있다
- test case는 초기화가 핵심
- test case의 순서만 바뀌어서 해보면 좋은 디버깅 방법
- 복사 Arrays.copy /// System.arraycopy // .clone 사용
- Arrays.sort()하기 전에 내부에서 안섞어준다 그러므로 따로 수열을 섞어줘야한다 (https:/blog.kyouko.moe/29)
- 자료형에 담을 수 없는 정수를 입력받는 경우 런타임에러가 발생하기도 한다
QnA
- 요즘 IT 기업 코딩테스트 트렌드 => 요즘은 구현 ~~
- 어떻게 구현할까? -> 어떻게 저장할까?
- 모르면 배워서 풀자 !!!!!!
- 시간복잡도 …. 아 겁나 어렵네 ㅠㅠ 어떤과정을 갖는지
- 정규표현식 좋다 … 공부하자