22.05.27 CS 스터디

Seong Hyeon Kim·2022년 5월 27일
0

CS스터디

목록 보기
3/9

소프트웨어

소프트웨어에 대한 정의

컴퓨터의 장점

  • 컴퓨터는 어떤 계산이라도 수행할 수 있는 범용 기계라는 점
  • 활용할 수 있는 명령어가 몇가지의 명령어들 이라도 이를 빨리 처리할 수 있다
  • 자신의 동작을 대부분 제어한다.

컴퓨터의 단점

  • 무엇을 해야할지 극도로 상세하게 알려주지 않으면 아무것도 하지 않는다는 것

* 결론

: 컴퓨터는 지칠 줄 모르고 실수없이 명령을 따르지만 해야할일을 세밀하게 알려줘야하고 정확하게 알려줘야 하는 마법사의 제자 입니다.

개발자와 결혼하면 생기는 일

소프트웨어 : 컴퓨터가 뭔가 유용한 일을 하게 해주는 일련의 명령어를 의미하는 일반적인 용어


알고리즘과 초콜릿 케이크 레시피

소프트웨어를 설명할때 레시피에 자주 비유하곤 합니다.

레시피는

  • 요리에 필요한 재료,
  • 요리사가 수행해야 하는 작업 순서,
  • 그리고 예상되는 결과

어떤 과제에 대한 프로그래밍은

  • 연산에 필요한 데이터 명시
  • 데이터에 대해 수행할 작업 설명
  • 결과물

실제로는 비슷해보여도 레시피는 애매모호한 부분들이 존재할 수 있지만, 프로그래밍은 그렇수 없다라는 가장 큰 차이점이 있습니다.



코끼리를 냉장고에 넣는 방법

1. 냉장고의 문을 연다.

2. 코끼리를 넣는다.

3. 문을 닫는다.


미국에서 화제가 된 코딩하는 아빠의 샌드위치 레시피

  1. 식빵 2개, 잼과 잼스푼을 준비한다.

  2. 잼스푼으로 식빵 하나를 문지른다.

  3. 식빵 하나를 들고 잼스푼으로 문지른다.

  4. 다른 한쪽 식빵에 잼을 문지른다.


알고리즘

  • 알고리즘(algorithm)은 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것입니다. 넓게는 사람 손으로 해결하는 것, 컴퓨터로 해결하는 것, 수학적인 것, 비수학적인 것을 모두 포함한답니다.

정밀성 : 변하지 않는 명확한 작업 단계를 가져야 한다.

유일성 : 각 단계마다 명확한 다음 단계를 가져야 한다.

타당성 : 구현할 수 있고 실용적이어야 한다.

입력 : 정의된 입력을 받아들일 수 있어야 한다.

출력 : 답으로 출력을 내보낼 수 있어야 한다.

유한성 : 특정 수의 작업 이후에 정지해야 한다.

일반성 : 정의된 입력들에 일반적으로 적용할 수 있어야 한다.


반에서 가장 키 큰 사람 찾기 : 선형 알고리즘

일반적으로 반에서 가장 키큰 사람을 찾으라면 그냥 눈대중으로 가장 키큰 사람을 찾을것입니다.
하지만 컴퓨터는 이런 단순한 계산조차도 수많은 데이터와 변수들이 존재한다.

기본적인 접근 방법

1. 한사람씩 차례대로 와서 키를 말한다.
2. 앞사람보다 키가 크면 그 값을 저장하고 그렇지 않다면 저장하지 않고 다음사람으로 넘어간다.
3. 최종적으로는 마지막에 가장 큰 사람이 가장 키큰 사람이 된다.

하지만 여기서 새로운 조건이 생긴다면 더욱 상황이 복잡해집니다.
조건1. 만약 키가 같다면 어떻게 처리할 것인가?
조건2. 자신의 키를 모른다면 어떻게 처리 할것인가?
조건3. 키를 조사중 가장 큰 키가 2명이상이라면 어떻게 할것인가?

등등 추가적인 상황들이 발생한다면 이것들에 어떻게 대처를 해야할지를 준비해놓지 않는다면,
컴퓨터는 에러가 발생할 것입니다.

이러한 문제를 해결하기 위해 필요한것이 자료구조 입니다.

자료구조

계산과정에서 필요한 정보를 표현하는 방법 입니다. 자세한건 좀더 뒤에서 다룰 예정입니다.



[배열 내부를 오름차순으로 정렬한 코드식]

const arr = [175, 165 , 178, 161, 171, 180];

arr.sort(function (a, b) {
  return a - b;
});
console.log(arr);

알고리즘의 중요한 특성

알고리즘의 특성 : 얼마나 효율적으로 작동하는가?

알고리즘이 빠른가 느린가?
주어진 양의 데이터를 처리하는데 얼마나 시간이 걸리겠는가?

계산 시간이 데이터의 양에 따라서 정비례 하거나 선형적으로 비례할 때 그 알고리즘을 선형 이라고 합니다.

profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 백엔드 개발자

0개의 댓글