알고리즘 문제 해결 기법 입문 - 구름 EDU 
 프로그래밍 - 알고리즘 
 과목 소개 ﻿ 
 본 과목 은 단순히 이론 적 인 내용 을 배우 는 과목 이 아닙니다 ! 논리 적 으로 주어진 문제 를 이해 하 고 알고리즘 을 설계 하 는 방법 들 그리고 프로그래밍 언어 를 사용 해 정확히 구현 하 는 방법 을 다루 고 있 습니다 . 이 과목 에서 는 문제 란 단어 를 아래 와 같이 정의 합니다 . 
 문제 란 , 요구사항 과 제한 사항 이 명확히 주어진 지시 사항 을 의미 하 며 우리 가 소프트웨어 적 인 방법 으로 해결 해야 할 대상 입니다 . 
 이 처럼 소프트웨어 적 으로 문제 를 해결 하 기 위해서 는 종합 적 인 능력 이 필요 합니다 . 소프트웨어 적 인 지식 , 프로그래밍 언어 에 대한 이해 , 이 산 수학 과 알고리즘 그리고 자료 구조 , 추가 적 으로 문제 를 읽 고 분석 하 는 언어 적 인 능력 까지 . 이 를 하나하나 개별 적 으로 공부 하 는 것 은 당연히 많 은 시간 이 걸립니다 . 하지만 무작정 한 번 에 공부 해 나가 기 에 는 너무 속도 가 더디 어 지치 기 마련 입니다 . 게다가 책 과 강의 에서 는 말 해 주 지 않 는 경험 적 인 센스 가 필요 한 부분 도 많 죠 . 
 이 에 반해 대부분 의 책 과 같 은 교육 컨텐츠 는 너무 이론 적 이 거나 , 상당 한 사전 지식 과 경험 을 요구 하 는 경우 가 많 습니다 . 이 과목 에서 는 가장 기초 적 인 문법 만 을 사용 하 여 유명 한 알고리즘 이 아닌 가장 기본 적 인 로직 구현 부터 차근 차근 훈련 할 수 있 습니다 . 내 가 생각 한 내용 을 어떻게 정확히 프로그래밍 언어 로 구현 할 수 있 는지 , 왜 이런 구현 이 가능 하 고 정확 하 다고 확신 할 수 있 는지 , 가장 기초 적 이 지만 가장 이해 하 기 힘들 었 던 내용 을 함께 배워 갈 수 있 습니다 . 
 가장 단순 한 반 복문 과 조건문 을 설계 하 고 증명 하 는 방법 부터 시작 해서 어려운 알고리즘 과 자료 구조 의 이론 적 인 내용 과 그 활용 까지 , 앞서 배운 내용 을 다시 활용 해 나 며 체계 적 으로 커리큘럼 이 진행 됩니다 . 
 프로그래밍 문법 을 공부 했 지만 여전히 구현 이 어려우 신 분 
 관련 과목 을 수강 하 는 학생 
 기업 사내 역량 평가 나 입사 코딩 테스트 를 대비 하 시 는 분 
 프로그래밍 기술 면접 을 준비 하 시 는 분 
 정보 올림피아드 , ACM ICPC 등 의 온라인 알고리즘 대회 를 대비 하 고 싶 으신 분 
 과목 의 목표 
 현실 에서 마주치 게 될 문제 들 은 수 많 은 아이디어 와 지식 그리고 경험 적 인 센스 를 요구 합니다 . 당연히 하나 의 과목 에서 이 모든 것 들 을 다룰 수 는 없 습니다 . 말 한마디 ' 아 ' 다르 고 ' 어 ' 다른 것 처럼 , 우리 가 마주칠 업무 와 문제 들 은 서로 비슷 해 보여도 전혀 다른 해결 방법 을 요구 합니다 . 이 과목 의 목표 는 수강 하 는 학생 들 에게 모든 지식 을 주입 하 는 것 이 아닙니다 . 과목 의 진짜 목표 는 다음 과 같 습니다 . 
 이 과목 을 수강 한 가장 이상 적 인 수강 생 의 모습 은 특정 지식 을 몰라서 구현 하 지 못할지 라도 , 지금 필요 한 것 이 무엇 인지 판단 하 고 스스로 습득 하 고 적용 할 수 있 는 능력 을 가지 는 것 입니다 . 각 챕터 에 수록 된 문제 들 은 이 수업 에서 다룬 내용 과 간단 한 아이디어 들 만 으로 해결 할 수 있 는 수준 으로 구성 됩니다 . 하지만 앞서 배운 내용 들 계속 해서 활용 할 것 을 요구 합니다 . 
 과목 의 구성 
 각 챕터 의 연재 순서 는 [ 강의 구성 ] 을 참고 해 주 세요 . 본 과목 은 계속 연재 중 인 과목 이 며 , 이 과정 에서 새로운 컨텐츠 가 추가 되 거나 변경 될 수 있 습니다 . 
 대상 프로그래밍 언어 
 기본 적 인 수업 자료 와 예시 는 가장 대중 적 이 고 직관 적 인 Java 를 기준 으로 작성 됩니다 . 하지만 대부분 기초 적 인 문법 을 사용 하 고 각 코드 에 대한 설명 이 충분 하 기에 Java 를 몰라도 이해 하 는 데 에 지장 이 없 습니다 . 
 수업 자료 와 설명 에 활용 되 는 가장 기본 적 인 언어 입니다 . 
 보조 수업 언어 ( 준비 중 ) 
 뼈대 코드 와 모범 답안 을 제공 할 언어 입니다 . 
 대부분 의 프로그래밍 언어 를 활용 해 실습 문제 를 풀 어 볼 수 있 습니다 
 Python 2 , Go , Java Script , Kotlin , C #, Ruby , . .. 
 수강 을 위해 알 아야 할 내용 
 이 과목 은 수학 이나 프로그래밍 문법 을 주로 다루 는 과목 이 아니 므로 , 원활 한 수강 을 위해서 는 아래 의 지식 을 알 고 있 거나 검색 할 수 있 는 능력 이 필요 합니다 . 본인 이 충분히 검색 과 독학 으로 병행 할 수 있 다면 문제 없 습니다 . 
 이 과목 의 제작 을 위해 참고 한 자료 들 
 최대한 유용 한 정보 를 정확 하 고 이해 하 기 쉽 게 전달 하 기 위하 여 개인 적 으로 알 고 있 는 내용 들 외 에 도 많 은 자료 들 을 참고 하 였 습니다 . 
 이 과목 에서 제공 되 는 문제 들 은 개인 적 인 아이디어 뿐 만 아니 라 위 에서 언급 한 책 과 아래 의 사이트 / 대회 / 시험 을 참고 하 여 제작 되 었 습니다 . 아이디어 가 아니 라 문제 자체 를 활용 한 경우 에 는 문제 별 로 상세 출처 를 기재 하 며 저작 권 상 의 이유 로 문제 를 무료 로 공개 합니다 . 
 이 과목 제작 에 도움 을 주 신 고마운 분 들 
 이 과목 의 컨텐츠 들 을 만드 는 과정 에서 함께 고민 해 주 시 고 귀중 한 시간 을 투자 하 여 리뷰 해 주 신 분 들 입니다 . 
 서병찬 , 이원우 , 박성준 조교 ( 아주 대학교 소프트웨어 학과 ) 
 송명근 ( 연세대 학교 물리학 과 대학원생 ) 
 박지현 ( 성균관 대학교 전자 전기공 학과 ) 
 정인섭 ( 연세대 학교 컴퓨터 공학 과 ) 
 백 창민 ( 자칭 코딩 공부 하 는 백수 ) 
 수강 생 전용 Slack