본문 바로가기
알고리즘

문제 해결 역량을 기르기 위한 전략

by Ahngyuho 2023. 12. 7.

이번 글에서 다룰 내용은 코딩 테스트 대비 알고리즘 문제 해결 역량 입니다.

저는 알고리즘 문제를 풀 때, 정형화된 순서나 방식을 따르지 않고 무작정 푸는 경향이 있습니다.

그리고 문제를 풀고 나면 그 이상 해당 문제에 대해서 고민해 보지 않았습니다.

 

위의 문제점들이 문제를 풀고 나서도 문제 해결 역량이 오르지 않는 원인이라고 생각되어 이번 기회에 문제 해결 역량을 기르기 위한 정형화된 틀을 잡아보려고 합니다!

 

문제 해결 전과 후로 나눠 문제 해결 역량을 끌어올리기 위한 전략을 한번 세워보겠습니다!

 

제가 문제를 해결했을 때를 떠올리면 보통 다음과 같은 사고를 거쳤을 경우가 대부분입니다.

•  문제에 대한 정확한 이해

•  문제를 해결하기 위한 추상화

•  추상화한 내용 코드로 옮기기

 

차례로 설명 해보겠습니다.

문제를 정확하게 이해하는 것은 당연히 너무 중요합니다. 문제가 무엇을 요구하는지 정확히 이해하는 것이 문제 해결의 시작이라고 생각합니다.

 

문제를 이해하고 나면 이를 나만의 언어로 표현하는 것입니다. 추상화를 통해 컴퓨터를 효율적으로 동작시키기 위한 방법을 떠올리는 것입니다. 여기서 추상화란 복잡한 현실의 개념을 간단하게 표현하는 것을 의미합니다.

 

이제 추상화한 내용을 코드로 옮겨야 합니다. 코드로 옮기기 위해서는 자료구조와 알고리즘을 선택해야 합니다.

그래서 자료구조와 자주 사용되는 알고리즘을 머리 속에 넣어 둬야 한다고 생각합니다. 

하지만 적절한 자료구조와 알고리즘을 떠올리는 것은 그렇게 쉽지 않습니다. 그래서 이를 위해 다양한 분류의 알고리즘 문제를 풀어보면서 이 능력을 길러야 한다고 생각합니다.

 

이렇게 문제 하나 해결하는 것도 중요하지만 그 이후도 문제 해결 역량을 기르는데 중요한 역할을 한다고 생각합니다.

그래서 저는 문제를 해결하고 나서 그 문제에 대한 저의 생각을 기록하고 있습니다.

기록의 내용은 크게 2가지 입니다.

 

  내가 했던 접근 방식들

  다른 사람들의 접근 방식 살펴보기

 

제가 했던 잘못되거나 올바른 접근 방식들을 적어보며 잘못됐던 것들은 무엇 때문에 이 문제에 적용할 수 없었는지 그리고 이를 통해 내가 잘못 이해하고 있었던 부분들을 적고 바로잡으려고 합니다.

올바른 접근 방식을 떠올렸을 때는 위에서 설명드린 문제 해결 전략을 자세하게 기록했습니다.

 

다른 사람들의 접근 방식을 살펴보면 다들 블로그에 자신의 생각을 자세하게 적어주시기 때문에 여러 방면으로 배울 수 있기 때문에 이것 또한 기록하고 있습니다.

 

 

정리

이번 글의 주제는 문제 해결 역량 기르기였습니다. 문제를 하나 풀어도 위와 같은 기록을 남겨놓지 않는다면 문제 해결 역량은 크게 오를거 같지 않았습니다. 그래서 정형화된 생각의 틀을 만들어 놓고 이를 따르면서 알고리즘 문제를 해결하려고 합니다. 

https://agh-dev.tistory.com/33

 

1727. Largest Submatrix With Rearrangements - Java

이번에 다룰 주제는 알고리즘 문제풀이 입니다. 제가 푸는 모든 문제들을 기록하진 않고, 풀면서 기록이 필요하다 싶은 문제들만 정리해서 기록하려고 합니다! 해당 문제가 기록이 필요하다고

agh-dev.tistory.com

위 링크는 제가 실제로 어떤 식으로 문제를 해결하는 지 자세히 기록한 글입니다!