park780172   5년 전

잠시 현자타임이 와서 알고리즘 공부 방법에 질문이 생겼습니다.

백준님이나 순위 높으신 분들
알고리즘 문제를 보고 어떻게 접근할 것인가에
대한 그 사고 과정과 푸시기 전에 설계를 하시는지
궁금합니다 ㅠㅠ

Q. 알고리즘 문제를 푸시기 전에 A4 용지 같은 곳에
어떤 변수들을 선언할지와 실행 순서 등등 그림을 그려가면서
설계를 하시고 코딩을 시작하시나요?

→ 저는 지금도 머리로만 생각하고,
코딩을 직접 Visual Studio에 하면서 고쳐 나가는 스타일입니다.
코딩 하기 전에 문제를 어떻게 풀 것인가 설계를
하더라도, 분명 중간에 오류 또는 반례가 생길 것임 분명할텐데 확실히
A4 용지 같은 곳에 어떤 변수를 선언할지 등등 그림을 그려가면서
문제에 접근하는 것이 많이 도움이 되나요!?

사실 어쩌면 저는 알고리즘 공부 방법을 잘 모르는 것 같습니다.. 

cheetose   5년 전

네. 매우 많이 도움 됩니다.

자세하게는 아니더라도 대략적인 프로그램의 흐름 정도는 종이에 쓰고 해야 구현할 때 실수가 적어져요.

이 상황에서는 이 알고리즘을 어떻게 사용하고 이 때 나온 결과가 무엇을 의미하나.

예외처리 해야할 것들은 무엇이 있는가.

등등등 님이 문제 풀면서 핵심 아이디어나 조심해야할 것들을 종이에 적고 시작하면 훨씬 편해질 거예요

djm03178   5년 전

지극히 개인적인 방법입니다. 결코 모범적이라고는 생각하지 않으며(오히려 극도의 귀차니즘을 보실 수 있습니다), 제가 하는 방법을 가지고 답변을 드리자면,

  1. 어떻게 접근할 것인가에 대한 그 사고 과정과 푸시기 전에 설계를 하시는지: 머릿속으로 이 방법이 거의 맞다는 확신이 들 때까지는 코딩을 시작하지 않습니다. 설계라고 한다면 아주 구체적인 계획을 짜는 것은 아니고, 전체적인 로직과 실행의 흐름 정도를 생각해 둡니다.
  2. 알고리즘 문제를 푸시기 전에 A4 용지 같은 곳에 어떤 변수들을 선언할지와 실행 순서 등등 그림을 그려가면서 설계를 하시고 코딩을 시작하시나요: 저는 종이에 펜을 대는 것을 매우 귀찮아하기 때문에 대부분의 문제를 푸는 과정은 그냥 머릿속에 생각한 것을 코드로 옮기는 일입니다. 하지만 너무 기억해 둘 거리가 많아서 정리를 해둘 게 필요하거나, 형상화가 잘 안 되는 그림같은 건 간단하게 그리기도 합니다. (이런 경우에도 종이보다는 메모장과 그림판에 마우스로 쓰는 걸 더 선호합니다.)
  3. 코딩 하기 전에 문제를 어떻게 풀 것인가 설계를 하더라도, 분명 중간에 오류 또는 반례가 생길 것임 분명할텐데: 물론 그런 경우도 생길 수 있지만, 저는 웬만하면 반례가 생기지 않는다는 확신이 생길만큼 충분히 제 로직에 대한 증명을 머릿속으로 한 후에 코딩을 합니다. 코드를 다 짠 후에 뒤늦게 설계가 잘못된 걸 깨닫는 건 너무 허탈하기 때문이죠. 코딩 후 수정을 하는 경우는 그냥 오타에 대한 것만 나올 수 있도록 가능하면 코딩 중에 생각을 뒤바꾸는 일은 생기지 않도록 합니다. 손가락을 움직이는 것보단 생각만 하는 것이 덜 귀찮아서 그렇습니다.

park780172   5년 전

@cheetose

@djm03178

두 분 너무나 감사드립니다.

사실 조언을 구할 곳이 이 곳 밖에 없어서 글을 올렸었는데 자세한 설명까지

두 분 모두 감사합니다.

저도 코딩을 하기 전에 로직이나, 변수, 순서 등등 생각해보고 옮겨 놓은 다음

코딩을 시작해봐야겠습니다.

감사합니다.

댓글을 작성하려면 로그인해야 합니다.