알고리즘 정의
<aside>
📘 “문제 해결”
어떤 문제 해결을 위하여, “입력된 자료”를 토대로 하여 “원하는 출력”을 유도하여 내는 규칙의 집합. 여러 단계의 유한 집합으로 구성되는데, 각 단계는 하나 또는 그 이상의 연산을 필요로 한다. [표준국어대사전]
</aside>
- 예시
-
엄마가 계란(input)과 돼지고기(input)를 사오라고(output) 심부름(문제)을 시켰을 때 여러 방법으로 수행(해결)할 수 있습니다.
- (예상치 못한 방법으로 문제를 푼 알고리즘)
- (최적화를 진행한 알고리즘)
- (간단하고 효율적 알고리즘)
-
위에 열거된 방법들이 전부 알고리즘입니다. 심부름 미션을 받은 자녀는 3개의 알고리즘을 생각했어요.
-
개발자는 생각할 수 있는 알고리즘 중에 어떤게 상황에 맞는 최선의 알고리즘인지를 찾아내는 능력을 갖춰야 합니다.
-
또한, (문제)를 정의하고, (해결) 과정을 찾아내는 과정이 매우 중요해요. 개발자는 사람들(기획자, 디자이너 등)의 요구사항을 잘 파악하여 코드로 구현하는 사람들 입니다.! 우리의 역할은 컴퓨터와 비즈니스를 연결해주는 사람이 “개발자” 입니다 😄
알고리즘이 중요한 이유
<aside>
💡 좋은 프로그램 = 프로그램을 수행하기 위해 꼭 필요한 자료구조 + 알고리즘
</aside>
- 알고리즘은 여러분의 숨겨진 Computational thinking(컴퓨팅 사고) 능력을 극대화 할 수 있는 과목입니다!
- 내일배움캠프에 모인 이유가 뭐죠?
- 알고리즘은 필수입니다. 의지를 가지고 슈퍼 개발자가 되길 원하는 진취적인 분들이 모였다고 믿고 있습니다. 슈퍼 개발자는 컴퓨팅 사고 능력이 뛰어나야하며 알고리즘 트레이닝은 여러분들이 취업 뿐만 아니라 슈퍼 개발자로 나아가기 위해 필요한 필수 스킬입니다.
- 처음엔 알고리즘은 누구에게나 어렵습니다. 수학적 사고 능력을 요구하며 갑자기 접하지 않은 개념들이 튀어나오는 경우가 많아요. 하지만, 시간이 걸리더라도 천천히 곱씹으면서 생각해보고 반복해보면, 노하우가 생기고 뇌에 알고리즘 회로가 생길겁니다! 시간이 걸려도 천천히! 확실하게! 잊지마세요!
알고리즘 공부 시 유의점.
<aside>
💡 알고리즘 공부를 하면서 기본 Swift 코딩 능력을 튼튼히 하는 것에 무조건 집중해주세요!
</aside>
- 기본 코딩 능력이란 무엇일까요?
- 프로그래밍 언어에서 제공하는 기본적인 기능들을 무리 없이 사용할 수 있는 능력을 말해요!
- 지금 잠시 테스트를 해볼께요. 여러분이 익숙한 언어로 다음과 같은 개념에 대해 코드로 적어보세요.
- 코드는 연습장으로 작성하실게요. 애플 메모장 좋습니다!
- 연습장으로 작성하는 이유: 코딩 테스트를 오프라인에서 진행할 경우 손코딩을 할 수도 있어요!
- 오로지 여러분이 현재 아는 지식만으로 승부하세요. 그래야 여러분의 실력을 정확히 알 수 있어요.
- 퀴즈 1
- 퀴즈 2
- 퀴즈 3
- 퀴즈 4
- 퀴즈 5
- 기본 코딩 능력이 뒷받침되지 않으면 코딩 테스트에서 떨어질 확률이 매우 커요. 머리로는 되는데, 손으로 안되는,,, (입으로만 하는 입코딩은 탈락입니다!)
- 과거 오프라인 면접이 대세일 경우, 칠판에 손코딩 면접이 있었는데요, 비대면 면접이 주를 이루면서 많이 줄어들었어요.
- Swift 에서는 String처리, 수학 처리(반올림 등) 등이
Foundation
프레임워크에 들어있습니다.