목록Computer Knowledge/코딩테스트 대비 (2)
Data house
구현 (Implementation) 머릿속에 있는 알고리즘을 정확하고 빠르게 프로그램으로 작성하기 1. 특징 - '풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제'를 의미한다. - 프로그래밍 언어의 문법에 능숙하고 코드 작성 속도(타자)가 빠른 사람을 보고 '피지컬이 좋다'라고 이야기하는데, 구현은 이런 사람들이 유리한 문제이다. - 구현하기 어려운 문제들은 예시를 들자면 다음과 같다. 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제, 특정 소수점 자리까지 출력해야하는 문제 , 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야 하는 (파싱을 해야하는) 문제 등이 까다로운 구현 유형의 문제이다. - '완전 탐색'과 '시뮬레이션' 유형을 모두 '구현' 유형이다. - 완전 ..
Greedy 그리디 현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘 1. 특징 - 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. - 사전에 외우고 있지 않아도 풀 수 있는 가능성이 높은 문제 유형이다. (반대로, 정렬, 최단경로 알고리즘은 알고 있어야 풀 수 있는 문제 유형이다.) - 창의력, 즉 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다. - 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 제시해준다. 그래서 정렬 알고리즘과 같이 잘 나온다. - '최적의 해'를 찾을 수 없을 가능성이 다분하다. - 그리디로 생각해보다가 해결법을..