아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
통쾌한천산갑117
통쾌한천산갑11720.08.21

알고리즘 풀기 효과적인방법은?

문제 풀때 양치기가 좋을까요? 아니면 오래걸리더라도 한문제를 보며 다양한답변을 찾는식이 좋은가요?

두번째방법으로 진행하고았었는데 너무 오래걸려서 자꾸안하게돼요 ㅠㅠㅠㅠㅠㅠㅠㅠ

어떻게 알고리즘 문제풀이를 해야할지 모르겠네요 실력자님들은 어떻게 공부하셨나요?

55글자 더 채워주세요.
답변의 개수8개의 답변이 있어요!
  • 안녕하세요.

    저도 아직 열심히 공부하고 있고, 아직도 실력이 부족하지만 간단한 답을 드리자면,

    1) 혼자서 무언가를 푸는 것은 좋지만, 한시간 이상 고민해서 안되면 풀이를 보시기 바랍니다. 쉬운 예로 어려운 미적분문제를 그냥 여러가지 방법으로 풀어만 본다고 해서 늘지는 않습니다. 오히려 시간만 갈 뿐이죠. 그래서 처음에는 꼭 풀이를 보시되, 그렇다고 발로 풀이만 보지 마시고 우선은 문제를 음미하는 시간을 가져 보시기 바랍니다.

    2) 알고리즘 문제에 있어서 제일 중요한건 생각하는 시간입니다. 그리고 점화식에 대한 기본 지식들이 필요하구요, 해당 내용들을 공부하는데 시간을 쓰시기 바랍니다.

    3) Big O notation에 대해서도 자세히 공부하시면 좋을 것 같습니다.

    좋은 성과 있으시기 바랍니다.


  • 알고리즘 공부는 기본적으로 한 문제를 오래 보는 걸 추천드립니다.

    아마 대표적인 알고리즘 문제들은 시중에 많이 알려져 있죠.

    예를 들어 탐색이나 heap, stack을 만들어서 푸는 것 등등 이요

    이런 기본적인 알고리즘 문제를 먼저 파악해서 정리하시면 좋습니다.

    여기서 말하는 정리란 기본적으로 비슷한 유형의 문제를 마주했을 때, 문제를 접근하는 방법을 자신만의 형식으로 정리해두는 것입니다.

    그 다음에 좀 더 난이도 있는 문제에 도전해서 곁가지를 치듯 학습하시면 어떨까 싶습니다.


  • 안녕하세요,

    알고리즘은 학문적으로 많이 연구가 되었습니다.

    우리가 수학에서 최적의 값을 찾고 싶을때, 하나씩 값을 대입하지 않고 방정식을 세워 해결 하듯이,

    상황별로 사용 가능한 도구들이 많이 개발이 되어 있습니다.

    이러한 도구들을 이해하는 것은, 사용할 수 있는 도구가 많아지는 것을 뜻합니다.

    문제를 풀때 다양한 방법으로 접근 하는 것은 다양한 도구를 이용해 문제를 풀어보는 것일 겁니다.

    만약에 알고리즘 해결 도구의 종류를 많이 가지고 계시다면 한가지 문제를 잡고 다양한 방법을 생각하시고 구현은 한두가지 선택하셔서 하시고, 다른 방법론은 이를 구현한 다른 사람의 사례로써 검증하시는게 좋을 것 같습니다.

    제 개인적인 추천은 온라인 저지 사이트를 이용해서 알고리즘 푸는 훈련을 하시는 것 입니다.

    대표적으로는 백준 온라인, 탑코더 등이 있습니다.

    이러한 사이트들에서는 알고리즘 해결 도구들을 모아서 커리큘럼을 제공하고 있으므로, 많은 도움이 되실겁니다.


  • 안녕하세요,

    질문하신 내용의 답변 드리겠습니다.

    요즘 저희 회사 포함해서 많은 IT 기업들이 알고리즘 시험을 당연하게 보고 있는데요,

    빠른 시간내에 실력과 점수를 높일 수 있었던 방법을 설명드리겠습니다.

    우선, 알고리즘 관련 책을 보면서 전체적인 감을 잡는게 중요합니다.

    (쉬운거부터 해야 흥미를 유지하며 이어 갈 수 있는거 같아요.)

    전체적으로 한번 훑어서 본뒤에는 바로 알고리즘 푸는 사이트를 이용해서 풀어보도록 합니다.

    (보통 C++ 이나 Python 이 무난합니다.)

    아래는 알고리즘 사이트 들 입니다.

    백준 : https://www.acmicpc.net/ (매우매우 쉬운 문제부터 양이 엄청남)

    리트코드 : https://leetcode.com/ (해외 IT 기업 취업시 유용한 문제들)

    삼성 SW Expert Academy : https://swexpertacademy.com/ (강의 + 문제)

    알고스팟 : https://algospot.com/judge/problem/list/ (제가 봤던 책과 연관된 문제들이 있던...)

    말씀하셨던 한문제를 다양하게 푸는것은 초반에는(아무것도 구현안해봤을 때) 괜찮을 수 있지만,

    항상 어떤문제의 최소한의 시간으로 (+최소한의 메모리로) 풀 수 있도록 노력해보시고, 푼뒤에 다른 사람 코드를 보고

    다른 알고리즘이 어떤게 더 좋았는지 보고 익히시는 방식으로 하시면 안질리게 계속 하실 수 있다고 생각합니다.

    감사합니다.


  • 저는 알고리즘을 터득하기 위해 상당히 많은 예제를 풀었는데요

    단순하게 책에 있거나 어떤곳에서 문제은행처럼 내는 문제를 푸는것도

    알고리즘을 터득하는데 도움이 되지만,

    더 많은 알고리즘 과 최적의 알고리즘을 찾아내기 위해서는

    스스로 문제를 변형해가면서 답을 찾도록 해보세요

    그리고 일부러 어려운 문제를 처음부터 낼 필요는 없습니다

    쉬운것부터 시작하여 쉬운문제에 변형을 가하여 문제풀이를 해보세요

    예를 들어 구구단 출력하는 프로그램을 만든다면?

    for 문을 통해서 만들어보기도 하고, if 비교문을 통해서 만들어 보기도 하고

    1-9단 , 1-20단 이렇게도 만들어보시고

    1단,2단,3단

    4단,5단,6단

    7단,8단,9단 이렇게 출력을 만들어보시고

    1단

    2단,3단

    4단,5단,6단

    7단,8단,9단 이렇게 스스로 문제를 변형해가면서 만들어보세요

    왠 쌩뚱맞은 방식이야 할지는 모르지만, 저렇게 구성을 위해서는 여러가지 명령어와

    알고리즘이 수반이 되기때문에 저런식으로 상당히 많은 문제들을 풀다보면,

    나중에 큰 도움이 되실겁니다^^

    이 방법이 제가 컴퓨터 처음 배울때 써먹었던 방법입니다.확실히 효과도 있구요^^


  • 대부분의 알고리즘 / 코딩 테스트는 결국 핵심적이고 자주 쓰이는 문제들을 꼬아서 출제하는것 입니다. ( 퀵 솔트 등등..)

    결국은 많은 문제를 다양하게 풀어보는것이 왕도입니다.

    백준 등 매우 유명한 코딩테스트 사이트들 말고도 비교적 최신 동향을 반영한 알고리즘 테스트 환경이 되어있는 사이트 들도 있습니다.

    다시한번 강조드리지만 좋은 문제를 많이, 깊게 풀어보시는것 말고는 정답이 없습니다.

    https://programmers.co.kr/learn/challenges?language=javascript

    많은 기업들이 실제 채용에도 반영하는 코딩테스트 및 강좌가 개설되어있는 프로그래머스 입니다.

    기본적으로 강좌도 좋지만 실제로 알고리즘을 접목한 문제를 풀어볼수있는 환경을 잘 제공해줍니다.

    https://level.goorm.io/

    구름 IDE 로 유명한 구름에 코딩테스트 도구입니다.

    사용자가 직접 알고리즘 문제를 만들어서 게시한다던가, 구름IDE와 접목하여 실시간으로

    다른 인원들과 채팅하며 코딩을 가능하게 해줍니다.


  • 음, 취준을 할 때가 생각이 많이 나네요... ㅎ

    제 의견은 일단, 문제유형을 많이 익히는게 중요하다고 생각합다. 기초적인 알고리즘은 이미 정해져 있거든요. 그거 위주로 일단 정답을 바로 보셔도되고, 한번 생각하고 보셔도 되고. 그걸 한번 쑥~익히시면, 코드 그라운드(?)였나.. 삼성에서 코딩대회하는 문제들 푸는 사이트 있거든요 ㅎ 거기서 난이도 별로 연습하는게 제일 괜찮은 방법이라 생각합니다. 정올(정보올림피아드) 이라는 사이트도 괜찮아요!


  • 안녕하세요 답변 드립니다.

    알고리즘 공부 어렵지요. 말씀하신 대로 많은 문제를 풀어보는 양치기와 한문제를 오랜시간 생각해보는 방법들이 있는데요.

    제가 추천드리는 방법은 이 두가지를 혼합하는 방식입니다. 한문제를 풀때 최대 40분을 넘기지 마시고 생각하시다가 못 풀면 그때 모범 답안을 봐서 해결책들을 익히시기 바랍니다.

    알고리즘 문제 은행 사이트로는 백준 추천드립니다.

    답변 채택 부탁드려요~