일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- gradle
- Java
- AWS
- React
- 자취
- 백준
- jdk11
- coding test
- JPA
- IntelliJ
- 디자인패턴
- 프로젝트
- spring
- 코딩테스트
- 자바
- Project
- 입출력
- 공유DB
- 팀프로젝트
- MVC
- Controller
- 코테
- javascript
- MariaDB
- spring boot
- SpringBoot
- JDK
- 취준생
- ps
- Today
- Total
목록PS/알고리즘 문제 해결 전략 (4)
Tech Collection
완전탐색 : 모든 경우의 수를 다 따져보고 찾음 : brute force 재귀함수 : 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그 중 한 조각 수행하고 나머지를 자기 자신 호출 후 수행 기저사례 : 쪼개지지 않는 가장 작은 작업들 * 입력이 잘못되거나 범위에서 벗어난 경우도 기저사례로 택하기 분할정복 : 각개격파 : 주어진 문제를 둘 이상의 부분 문제의 답으로 나눈 뒤 각 문제에 대한 답을 재귀 호출을 이용해 계산함, 각 부분 문제의 답으로부터 전체 문제의 답을 계산 : 반복할수록 기저사례에 도달하기까지 걸리는 분할횟수가 줄어들기 때문에 가능한 한 절반에 가깝게 문제를 나누고자 한다. 효율 저하: 부분문제가 중복된다 (여러번 중복되어 계산되면서 시간을 소모하는 부분 문제 존재) -> 동..
알고리즘? : 주어진 문제를 해결하는 한 가지 방법을 명료하게 써 놓은 것 Big O : 시간복잡도를 나타내는 방식 중 하나 (보편적으로 많이 쓰임) 빠름 ~ 느림 O(1) - O(log n) - O(n) - O(n log n) - O(n^2) - O(2^n) - O(n!)
문제 푸는 순서 1. 문제 읽고 이해 2. 문제를 익숙한 용어로 재정의 (추상화) 3. 어떻게 해결할 지 계획 : 사용할 알고리즘, 자료구조 선택 4. 계획 검증 5. 프로그램 구현 6. 복기 가능한 많은 문제를 푸는 것이 중요하다. 직관적이며 체계적인 접근이 필요 : 꼬리질문 계속 하기 자주하는 실수가 무엇인지 체크하기 좋은 코드? - 간결한 코드 (전역변수) - 적극적인 코드 재사용 (모듈화) - 표준 라이브러리 사용 (문자열, 동적 배열, 스택, 큐, 리스트, 사전 / 정렬) - 항상 같은 형태로 코드 작성 - 네이밍 컨벤션 지키기 (변수명, 함수명) - 자료의 정규화 후 저장 : 프로그램이 자료를 입력받거나 계산하자마자 곧장 이루어져야 함 - 코드와 데이터의 분리 알아두면 좋을 것 - 입출력 방식..
알고리즘 문제 해결 전략 세트 이 책은 프로그래밍 대회 문제를 풀면서 각종 알고리즘 설계 기법과 자료 구조에 대해 배우고, 나아가 문제 해결 능력까지 키울 수 있도록 구성되어 있다. 각 장에는 독자가 스스로 프로그램을 www.yes24.com 이 책을 시작으로 코딩테스트를 완벽하게 준비할 것이다. 진작 했어야 할 것이었는데, 늦어도 너무 늦었다..ㅠㅠ 근데 C++이라 못 알아볼 정도는 아니지만 긴가민가하게 해석되는 코드가 대부분이어서 꼼꼼하게 정독해야 할 것 같다. 4월 한 달동안 3회독을 목표로 진행할 예정이다. 1회독에는 [ 1, 2, 3, 4, 6, 7, 8, 18, 19, 21, 22, 23, 27, 28, 29, 30 ] 총 16장을 진행하고 2회독에는 총 32장 모두 읽을 것이다. 그리고 3회..