두번째 공부(개발공부)/CS(Computer Science)

부스트 코스 CS50 2019 ] 컴퓨팅 사고 part.3 - 알고리즘 & 스크래치

YTReeee 2023. 6. 7. 23:44

강의 듣고 정리하고, 블로깅하는데 시간이 생각보다 많이 든다.

블로깅을 하면서 느낀 생각은 블로그를 꾸준히 관리하는 사람들이 대단하다는 생각뿐이다!ㅎㅎ

이번 포스팅에서는 알고리즘과 스크래치에 대해 알아보겠다.


알고리즘!?

알고리즘(영어:algorithm), 셈법은 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차이다. - 출처 : 위키백과
알고리즘은 문제를 해결하기 위해 정해진 단계와 규칙에 따라 순서대로 수행되는 절차나 방법입니다. - 출처 : 챗GPT

알고리즘이란 문제 해결을 위한 과정을 단계적으로 나열한 것이라고 정리할 수 있겠다.


정확성과 효율성의 끝판왕!

알고리즘은 정확성과 효율성을 추구한다.

CS50 강의에서는 전화번호부에서 이름을 찾는 방법을 예시로 든다.

Quest. 전화번호부(1024장)에서 문익점씨를 찾아서 전화해라!
// 한장씩 넘겨서 찾기 -> 1024장을 일일이 넘겨서 찾는다. (x) - 비효율적
// 두장씩 넘겨서 찾기 -> 512번 넘겨야 한다. 스킵된 페이지에 찾는 이름이 나올 수 있다.(x) - 부정확
// 절반씩 찾기 (O) - 정확성 & 효율성  => 알고리즘의 힘!
-> 전화번호부 절반을 넘겨 찾고, 앞에 있으면 앞에 절반을 펼치고, 뒤에 있으면 뒤에 절반을 펼친다.
-> 1장이 남을 때까지 반복한다.
-> 10번만 넘기면 1장이 남는다. 그래도 없으면 그만 찾는다.

알고리즘을 잘 이용하면 위와 같이 효율적이고 정확성 높은 작업이 가능해진다.

단, 이를 위해서는 알고리즘을 구현하기 전에 의사코드를 이용하여 어떤 동작들이 필요한지 설계하는 과정이 필요하다.

의사코드는 변수, 루프, 조건(불리언), 함수 등으로 구성된다.

- 변수는 정보를 저장하고, 재사용하기 위한 저장공간이다.
- 루프는 반복을 의미한다.
- 조건은 참과 거짓의 불리언 값을 갖는다.

스크래치?

스크래치는 MIT에서 만든 그래픽 프로그래밍 언어이다.

명령이 담긴 블록을 옮겨 붙여가며 알고리즘을 만들어 볼 수 있다.

스크래치 블록은 프로그램이 수행하는 일이며, 입력과 출력을 블록을 이어붙여 순차적으로 수행하는 알고리즘을 만든다.

출처 : 스크래치 홈페이지(https://scratch.mit.edu/projects/editor/?tutorial=getStarted)

여러 명령블록을 내 마음대로 붙여가며, 우측에 있는 고양이 캐릭터에게 명령을 전달하면, 고양이가 해당 명령을 수행한다.

 

알고리즘을 구성하는 요소(변수, 조건(불리언), 루프, 함수 등)들을 이용하여 다양한 프로그래밍이 가능하다.

알고리즘은 효율성을 추구한다고 앞서 설명한 것과 같이, 한 가지 작업을 여러번 수행할 때 해당 명령을 복사&붙여넣기 하는 것은 바람직하지 못하다. 이 경우, 루프를 이용하여 반복된 작업을 수행하게 하는 것이 바람직하다.

이 외에도 별도의 함수를 만들어 작동시킬 명령을 입력해 전달할 수도 있다. 이렇게 전달된 명령은 프로그램을 사용하는 사람이 굳이 어떤 원리로 작동되는지 몰라도 상관이 없다. 이를 추상화라고 한다.

추상화는 복잡한 시스템이나 개념을 간소화하고 중요한 부분을 강조하여 이해하기 쉽게 만드는 과정이다.
- 출처: 챗GPT

정리 및 회고

우선, 정리를 해보자면 컴퓨팅 사고라는 주제로 포스팅을 진행하였고, 2진법과 컴퓨터가 정보를 표현하는 방식, 알고리즘 그리고 스크래치 프로그래밍 언어까지 알아보았다.

게으름으로 인해 3주라는 시간이 걸려서야 CS50 강의의 첫번째 챕터 정리를 마칠 수 있었다.

주제 자체가 흥미로운 것도 있지만, CS50 강의가 너무 재밌어서 지루하지 않았다(녹화본이지만, 강의를 참 재밌고, 열정적으로 하신다.)

다음 포스팅은 C언어에 대해 해보려고 한다. 배울게 너무 많다보니.. 가능하면 챕터 하나를 하루씩 끝내야 할 것 같은데 가능할.. 해야지!ㅎㅎ

 

부트캠프 2개월 차, 바쁘고 분주한 시간이지만, 공부라는 걸 한 시간 동안 가장 열정적으로 공부하고 있는 것 같다.

부트캠프를 수료한 후의 내 모습이 어떻게 되어 있을지 궁금하고, 기대된다.

2023년 목표한 것과 같이 꼭 올해 안에 연봉 3500만원을 받을 수 있는 기업에 취업할 수 있도록 노력해보자!