(TIL) 20220311, 어떻게 문제를 풀 것인가

2022. 3. 12. 02:37TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것)


  • 알고리즘 문제 풀기(Java,파이썬)
  • 카카오 모빌리티 코딩테스트 완료(코딜리티)
  • 짝프로그래밍
  • 어떻게 문제를 풀 것인가 독서

 

🏴󠁩󠁤󠁪󠁷󠁿Findings(배운 것)


어제 <프로그래머의 뇌>를 읽으면서 나눈 이야기 중에 '나는 문제를 어떻게 푸는가'가 있었고, 

그중에서 <어떻게 문제를 풀 것인가>에 나와 있는 방식대로 문제를 접근하고 있다는 분의 얘기를 봤다.

 

그래서 한 번 읽고 실천하지 않은 책을 다시 꺼내 들었고, 아주 중요한 것을 확인할 수 있었다.

(그리고 이를 파이썬 문제 풀이에 적용했다.)

 

저자는 해답을 찾으려는 사고를 4가지 단계로 분류하였다.

 

  1. 문제를 "이해" 하라
  2. 여러 가지 사항들이 어떻게 관련되어 있는지 파악하고 계획을 세워라
  3. 계획을 실행하라
  4. 완성된 풀이를 되돌아보라

 

가장 먼저 문제를 이해해야 한다.

문제를 이해한다는 것이 뭘까?

 

여기에서 이해라는 것은 '미지의 것은 무엇인가', '자료는 무엇인가', '조건은 무엇인가'

등의 물음을 던져서 해답을 찾는 과정이라 할 수 있겠다.

 

결국 해결해야 하는 문제, 도출해야 하는 결과가 무엇인지 파악하는 것이다.

 

실제로 문제가 무엇인지 모르고 해결하려는 경우가 허다하다.(나도 그랬다.)

 

해결해야 하는 문제가 무엇인지 알아낸다면, 반은 완성한 것이다.(뇌피셜)

 

문제가 무엇인지 알아내는 방법은 여러 가지가 있을 수 있겠지만, 대표적으로 그림을 그리거나, 적절한 기호를 붙여서 알아낼 수 있다.

 

그다음으로, 계획의 작성이다.

 

책에서는 번뜩 떠오르는 아이디어가 최상이라고 하지만, 우리는 그러기 쉽지 않을 걸 안다.

 

그래서 가장 좋은 방법은 '이전에 비슷한 문제를 풀어본 경험이 있나?'를 생각해보는 것이다.

 

이러한 질문을 스스로에게 던지고, 자료를 활용하고, 조건을 파악하면서 풀이에 대한 계획을 작성할 수 있다.

 

다음으로, 계획의 실행이다.

 

언뜻 보기에는 가장 쉬워 보이지만, 생각보다 수립된 계획을 바탕으로 문제 해결을 진행하기란 쉽지 않다.

여러 가지 이유가 있을 수 있겠지만, 책에서는 '자신이 세운 계획을 잊어버리는' 경우가 생긴다고 말한다.

 

그럼 이 상황을  어떻게 방지할 수 있을까? 바로 매 단계를 점검해야 한다는 사실을 잊지 않는 것이다.

 

마지막으로, 풀이에 대한 회고가 필요하다.

 

'결과를 점검할 수 있는가?', '논증 과정을 점검할 수 있는가?' 등의 질문을 던지면서

스스로의 풀이를 돌아볼 수 있다.

 

또한 문제 풀이에 대한 다른 방법이 있지는 않은지, 가독성은 어떤지 등에 대해서도 돌아볼 수 있을 것이다.

 

 

🏴󠁩󠁤󠁪󠁷󠁿Feeling(느낀 점)


<프로그래머의 뇌> 스터디를 진행하면서 윤석 님이 한 말씀 중에 생각나는 게 있다.

가장 기억에 오래 남기는 방법은 시험을 치는 것.

 

오늘 카카오 모빌리티 코딩 테스트를 쳤는데, 3문제 중 2문제를 해결했다.

 

이 문제를 해결하면서 얻은 것은 자바 문법에 대해 좀 더 단단해졌다는 것이다.

 

그래서 밑에 새로 얻은 자바 문법에 대해서 정리해보았다.

 

 

 

(Java) 문자열 잘라 배열에 저장

코딩 테스트 혹은 알고리즘 문제를 접하다보면 무수히 많은 문자열 문제를 접하게 된다. 자바는 언어 중에서 좀 문자열에 불친절한 언어이기 때문에 답답할 때가 종종 있다. 하지만 어쩌겠는가,

mirrorofcode.tistory.com

 

(Java) StringBuilder 문자열 만들기

왜 자바는 String += char가 안 될까? (정말 답답하다 C++도 되는데..) 고맙다고 해야할지 모르겠지만, 이와 비슷한 StringBuilder라는 것을 만들어 두었다. StringBuilder에 대해서 알아보자. import java.util...

mirrorofcode.tistory.com

 

 

🏴󠁩󠁤󠁪󠁷󠁿여담


 
반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20220317, 바이위클리 회고  (0) 2022.03.18
(TIL) 20220313  (0) 2022.03.14
(TIL) 20220310  (0) 2022.03.10
(TIL) 20220309, Java 문법들  (0) 2022.03.10
(TIL) 20220305  (0) 2022.03.05