알고리즘 문제 접근법
in Study on Study,, Algorithm

아무리 문제들 들여다봐도, 심지어는 레퍼런스를 봐도! 이해되지 않는 알고리즘, 코딩테스트 문제들..!
접근방법부터 알아보고자 한다.
우선 머리에 새겨야 할 말은 하나다.
문제를 풀어라, 그게 어렵다면 작고 간단한 문제부터 풀어라!
아무리 어려운 문제라도 쪼개고 쪼개고 쪼개서 들어가보면 작은 문제들의 얽히고 설킨 덩어리일 뿐이다. 그냥 그..얽히고 설킨게.. 복잡하게 꼬여있어서 그렇지.. 아무튼 작은 문제부터 시작한다면 해낼 수 있는 용기가 생길 것이다! 자 아래의 내용으로 그 용기에 용기를 더해나가자
STEP 1. 문제 이해하기
- 나의 언어로 그 문제를 다시 말할 수 있는가?
- 문제에 어떤 input을 넣어야 하는지, 어떤 결과를 기대할 수 있는지 파악하고 있는가?
- 문제를 해결할 충분한 정보를 갖고 있는가?
STEP 2. 세분화한 예시
- 간단한 예제로 시작하기
- 좀 더 복잡한 예제 풀어보기
- 아무 것도 입력하지 않았을 땐 어떤 결과가 나오는지 알아보기
- 잘못된 입력을 했을 때 어떤 에러가 나는지 등 알아보기
- 그 외에 문자, 숫자 등 여러 데이터 타입으로 실험하기
STEP 3. 세부 분석
- 어떻게 풀어야할 지 단계별로 의사코드 적기
STEP 4. 해결 또는 단순화
- 문제를 해결하는데 걸림돌이 되는 부분 (풀이가 어려운 부분)을 과감히 잘라내기
- 문제를 단순화해서 풀어보기
- 그런 다음 어려운 부분을 다시 넣어 풀기
STEP 5. 되돌아보고 리팩토링하기
- 코드가 작동하는가?
- 다른 접근방식은?
- 이 풀이를 다른 문제에 사용할 수 있는가?
- 풀이 성능 개선할 수 있는가? (시간복잡도 + 공간복잡도)
- 다른 리팩터링 방법이 있는가?
- 다른 사람들의 풀이는 어떠한가?
마지막으로
코드 작성과 리딩에 가장 중요한건 효율성과 가독성이다. 이 링크를 누르면 알고리즘 해결 ‘상상도’..?와 같은 아주 단비같은 사이트 ‘비주얼고(visualgo)’로 이동할 수 있다. (나는 자꾸 비주얼고가.. 비주얼로고로 보여가지고.. 계속 ‘visualogo’로 쳐서.. 제대로 된 주소를 누군가 알려줄 때까지..못 들어가고 있었다.)
아무튼 화이팅!!!!!