2025.08.05 TIL
2025.08.05 TIL
오늘 배운것
- 코딩 테스트 볼때 자주 발생하는 실수 또는 오류에 대해 배움
예상치 못한 음수가 발생하는 경우
주로 정수형에서 많이 발상해고 대략 21억의 값이 넘어갈때 표현 범위를 넘어서 발생한다. 형변환
으로 범위를 늘려주면 된다.
시간초과의 원인을 찾아 해결
문제에서 시간초과는 두가지 이유로 발생할 수 있다.
- 작성한 로직의 시간 복잡도가 주어진 시간을 넘어가는 경우
- 데이터 입출력의 횟수가 많은 경우
데이터 입출력에 Scanner, print, BufferedReader, BufferedWriter 쌍으로 많이 사용된다.
데이터의 입출력의 횟수가 적으면 둘의 차이가 많이 안나지만 많아지는 순간 둘의 실행속도의 차이가 많이 발생한다.
인덱스에 의미 부여하며 풀기
인덱스가 데이터의 순서에 대한 의미는 잘 알고 있다. 문제를 풀땐 데이터의 순서에 대한 의미 말고도 특정 값의 갯수 등… 여러 의미를 부여해서 문제를 해결할 수 있다.
나머지 연산의 중요성
코테 문제에서 나머지 연산 문제는 꽤 많이 존재한다. 그리고 나머지 연산 구할때 함정 문제도 존재한다. 1 ~ 50 까지의 곱을 10007로 나눈 나머지를 구하라는 문제를 보면 long
타입으로 선언해도 음수가 나오게 된다. 그래서 분배 법칙에 대해 알아야한다.
분배법칙
- 덧셈, 뺄셈, 곱셉에 분배법칙이 적용된다.
- 반복문 내에서 3개의 연산자가 존재한다면 나머지를 구한뒤 최종 나머지 값을 구해도 동일한 값이 나온다.
정렬기초
Arrays.sort(arr)
: 기본자료형 배열의 오름차순 정렬Arrays.sort(arr, Collections.reverseOrder())
: 참조자료형 배열의 내림차순 정렬negate(arr); Arrays.sort(arr); negate(arr)
: 기본자료형 배열 내림차순 구할때 음수로 바꾸고 오름차순 정렬한 뒤, 다시 양수로 변환
다중 조건 정렬
객체간의 정렬을 구하기 위해 두개의 인터페이스가 사용된다.
Comparable
: 객체 내부에 작성됨.Comparator
: 객체 외부에 작성됨.자유롭게 생성가능
오늘 회고
오늘 몸에 염증이 많이 생겼었는지 일하는중에 정신을 못차려서 해야했던 업무를 다 완수하지 못했다. 건강 챙겨서 빨리 회복하도록 노력해야겠다.
그리고 Do it! 알고리즘 책을 사서 알고리즘 공부를 시작하려고 한다. 이제 2일차로 많이 공부하지 못했지만 새로운 지식분배법칙을 알게되었고, 까먹었고 자주사용하지 않은 지식정렬조건, 다중정렬에 대해 리마인드 할 수 있어서 좋았다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.