1. 개요

몇 일 면접과 테스트를 본다고 알고리즘 코드를 짜지 못했다.

그러니 바로 공부한 것들이 가물가물 해졌다.


그래서 앞서 재귀 방식으로 풀었던 '금액 맞추기 알고리즘'을 조합 알고리즘을 활용하여

모든 경우를 출력하는 알고리즘을 작성하면서 복습하기로 했다.


똑같은 조합 재귀 흐름에 단지 조건만 변화한다.

역시나 똑같은 현재의 경우를 조사하고, 조사하지않고라는 두 가지 흐름뿐이다.


계속 까먹지 않도록 알고리즘 공부하자.


오늘 칼럼을 읽으면서 배운 알고리즘 공부법.


1. 생각을 많이 하는 것.

2. 문제에 집착않고 빠르게 포기할 수 있는 것.

3. 다른 사람의 도움을 받는 것.


이 중에서 특히 2번째 방식이 와닿았다.


알고리즘 문제는 최대 1시간만을 생각해야 한다. 1시간동안 더이상 답이 떠오르지 않으면 2가지 방법이 있다. 첫 번째는 바로

인터넷 검색을 하거나 다른 사람에게 도움받는 것이고, 두 번째는 며칠 후에 그 문제를 보고 다시 생각을 해보고 모르겠으면

찾는 것이다.


알고리즘 문제풀이에서 가장 중요한 것은 '스스로 해결하는 능력'이 아니라 '문제를 풀이하는 능력'이라는 것.

즉, 어떻게 해서든 문제를 풀어내는 것이 중요하지 내 스스로 학구열에 불타서 풀었다고 좋은게 아니라는 것이다.


사실 알고리즘 문제풀이는 알고리즘을 알아야 풀고, 모르면 풀기가 굉장히 어렵다. 알고리즘은 매우 많은데 그걸 모두 스스로

만들어서 하려고 한다면 그건 별로 효과가 없다.


그렇다고 알고리즘 문제풀이를 암기하라는 것은 아니다. 꾸준히 계속 반복학습을 하면서 알고리즘 문제 풀이를 하면서 그 

문제를 풀어나가는 '생각의 과정'을 배우는 것이 가장 중요하다.


2. 문제

주어진 지폐 1000원, 5000원, 10000원, 50000원으로 입력한 금액을 맞추는 모든 경우를 출력하고,

각각의 경우를 이루는 지폐들을 모두 출력하시오. (입력 금액의 단위는 반드시 1000원 단위)


3. 코드 및 출력 

3-1) 코드


3-2) 출력


4. 정리

뭔가 요즘 알고리즘 풀이 능력에 대한 과도기 같다. 조금만 더 열심히 꾸준히 해낸다면 한 단계 레벨업을 할 수 있을 것

같은 느낌이다. 하지만 그 벽을 넘는 것이 어떤 것인지 모르겠다. 앞으로 나가서 계속 배우기보다 과거에 배웠던 것을

다시 복습하는게 더 중요한 것 같다.


그리고 오늘 어쩌면 첫 번째 결과가 나올지도 모른다. 

두렵다. 정말.

또 와르르 무너지는 그 심경을 다시 느끼게 될까봐.

아니야 난 돼. 라고 항상 자신감에 넘쳤던 예전이 신기하다.

어떻게 그렇게 무대포로 거침없이 나아갈 수 있었는지.

분명 과거보다 더 발전하고 더 많이 알고 더 능숙해졌는데, 알아갈수록 두려움은 계속 커진다.

이래서 모르면 용감하다는 말이 진짜 절실히 느껴지는 때다.


과연 어떨까?

나는 앞으로 갈 수 있을까? 아니면 한 번더 미뤄질까?

분명 그 자리에서만큼은 아쉬움과 미련이 없을정도로 잘 해냈다고 생각했는데, 그 느낌은 과연 진짜였을까.

요동친다.


된다 된다 된다 된다.

그래 된다.


+ Recent posts