알고리즘 공부 어떻게 해야 할까요

jckmjr의 이미지

프로그래밍 경험이 거의 없는 생초짜입니다

지금 한 일주일째 C언어 기초 책을 보고 있는데

너무 세세한 게 발목을 잡네요..

실수가 저장되는 원리라던지..문자열 아스키코드를 이용한 연습문제 같은 거요.

좋은 입문서 추천 부탁드립니다.

감사합니다.

snowall의 이미지

제 개인적인 견해입니다. 다른분들은 다르게 생각하실수도 있어요.

1번 - 네. 배열, 포인터, 구조체 알면... 물론 과제를 C로 제출해야 한다면, C언어를 컴파일해서 결과를 낼 정도는 할줄 아셔야겠죠.
2번 - 자료구조를 공부하세요. 큐, 스택, 연결 리스트, 힙, 이런것들 대충 알아야 알고리즘 공부할때 "알아듣습"니다.
3번 - 음.... 이건 패스요.

일단 정렬 알고리즘을 예습해보세요. 자료구조랑 같이 보면서 이해하면 더 좋아요.

컴퓨터랑 관련이 없는 학과라고 해도, 문과인지 이과인지, 어느 학과인지 배경을 말해주시면 아마 더 유익한 답이 달릴 수도 있습니다.

피할 수 있을때 즐겨라! http://melotopia.net/b

jckmjr의 이미지

답변 감사합니다.

지금 정말 초고속으로 C언어 기초 책을 1회독 한 상태인데요.

컴파일러 켜놓고 혼자 코딩하려고 하면 아무것도 기억이 안 납니다.
그래서 2~3회독 더 한 후에 자료구조나 알고리즘 책을 보려고 합니다.

저 정말 막막해서 어떤 질문을 해야할지도 모르겠네요;하하

C언어 본지 1주일째
#include 써놓고 멍때림

이상황에서 무얼 해야 할지 감이 안잡히네요ㅠ.ㅠ

snowall의 이미지

어쨌든 정렬 알고리즘부터 이해해보세요. 가장 기초니까요.

그리고 책에 나온 예제 코드를 한줄씩 이해하면서 넘어가보세요.

일단 예제 코드를 그대로 컴파일해서 실행시켜보고, 그 다음 조금씩 바꿔가며 결과가 어떻게 바뀌는지 보는 것도 좋아요.

피할 수 있을때 즐겨라! http://melotopia.net/b

jckmjr의 이미지

앗 댓글의 댓글을 단다는게 잘못달았네요; 여긴 삭제 기능이 없나봐요 ^^;;;;;

shint의 이미지

1. 당장 알고리즘 수업을 듣기위해 C언어를 공부할때 배열 포인터 구조체 이부분만 확실히 해도 될까요?
네. 프로그램은 함수. 메모리. 연산. 이면 대부분이 가능합니다.
근데. C 보다는 플래시나 자바스크립트등에 표현하기 편한 언어로
물체(데이터)가 이동하는것을 보면서 이해하는것이 효율적입니다. 예를 들면. 게임을 만들어 보세요.

2. 자료구조를 안 듣고 알고리즘을 듣는 거라서 상당히 불안합니다. 따라가기 위해 어떤 준비를 해야 할까요?
도서관과 서점으로 가셔서. 자료구조와 알고리즘 관련 서적을 보세요

이런 사이트도 있는데 구경해보세요
http://euler.synap.co.kr/prob_list.php

3. 좋은 입문서 추천 부탁드립니다.
모두 좋은 책이라서 모두 한번씩 훑어 보시고. 그중 가장 알기 쉬운 도서를 보시는게 좋습니다.

자료구조
알고리즘
네이버에 쳐보세요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

kid1402의 이미지

자료구조 정말 중요합니다.. 물론 c언어 (혹은 다른 프로그래밍 언어)를 조금은 아시는게, 자료구조에서 왜 이런 자료구조가 필요하고 이런건 어떨때 쓰이고 등등을 아시는데 도움이 더 크겠지만 시간이 안되신다면 자료구조를 보시면서 언어적인 걸 보시는게 좋겠녜요.

이런 명언(격언?)이 있죠..

자료구조를 훌륭하게 만들고 코드를 멍청하게 만드는 것이, 그 반대의 경우보다 훨씬 잘 동작한다.

한마디로 프로그램 하나 만드는데 있어서 자료구조만 잘 Define 된다면 절반은 먹고 들어간다고 봐야죠..

화이팅입니다

addnull의 이미지

제 생각으론 자료구조 뿐 만아니라 이산수학 수강 없이 알고리즘을 듣는다는건 불가능하다고 봅니다만...
질문자께서 처하신 상황(50일 동안)에 가능한 방법으로
"C로 배우는 알고리즘 1권 (이재규 저)"을 읽어보시고
예제 코드를 직접 짜보시면 도움이 될 것 같습니다.
1권은 읽어보길 권합니다만, 2권은..... 사실 저도 2권은 안 읽었습니다... ;;

엄청 오래된 고전(제가 읽을 당시는 2001년도..)이지만,
한글로 쓰여진 점, 각 자료구조마다 전체 코드가 다 나와있습니다.
그래서 자신이 직접 자료구조를 짜보고 책에서 나온 코드랑 비교해볼 수 있어서 좋더군요.

emptynote의 이미지

[냉무] C로 배우는 알고리즘 1권 저두 강추합니다.

개인적으로는 의사 코드보다는

디버깅 툴로 변수 추적하면서 이해를 하는것을 더 선호합니다.

그래서 강추합니다.

zaemin2의 이미지

알고리즘 배우는데에는 아스키코드라든지, 실수가 저장되는 원리라든지 이런 세세한것은 건너뛰어도 좋을것 같습니다.

최소한,
1. C언어 : 논리를 설게해서 코딩해서 컴파일해서 출력할수 있을정도.. ( 구구단 출력, 소수 구하기등등 )
2. 자료구조 : 배열정도.. ( 2차원, 3차원 배열 다루는법, 배열 특정 인덱스에 엑세스 하는법등 )
3. 논리연산( and, or, not등등 )

최소 이정도만 해도 수업은 따라갈수있지 않을까 생각합니다. 너무 걱정하지 마세요 ~

goforit의 이미지

다음을 추천합니다.

#1 C로 배우는 알고리즘 1권과2권을 공부한다.
#2 유명한 알고리즘 훈련 사이트 가입한다. https://www.hackerrank.com/
A) #1를 다시 복습하면서 문제를 푼다.
B) 다른 사람들이 해결책이 더 좋으면 적극 흡수한다.
C) 반드시/절대로 컴퓨터 없이 종이로 코딩하는 습관을 가진다. (회사 인터뷰용으로)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.