(CS50)-알고리즘 기초(의사코드)

CS50 x edwith 강의를 들으며 정리한 공부 포스팅입니다.

그림출처

핵심 개념

  • 프로그래밍 언어
  • 의사 코드
  • 할당
  • 들여쓰기

프로그래밍 언어

  • 기계가 알아들을 수 있도록 명령을 내리기 위해 사용되는 언어
    • 자연어(natural language), 의사 코드(Pseudocode), 순서도(flowchart) 등.

의사 코드

  • 프로그래밍 언어보다 문법적 제약을 적게 받으므로 알고리즘 표현에 많이 사용됨.

예제: 방 안에 있는 사람의 수를 세기 위한 알고리즘

의사 코드의 예시

의사코드예시

  • 0부터 시작하여 방 안에 있는 각각의 사람을 셀 때마다 1씩 더한다.
  • 할당
    • 1번 줄 처럼 n 이라는 이름을 부여하고 0 값을 넣어주는 것.
    • 코드 내에서 값을 저장할 수 있는 공간 n이 마련되고 0이라는 초기값이 들어가게 됨.
  • 마지막 줄에서 n이 n+1이 되도록 다시 할당.
  • 그래서 한 사람씩 늘어날때 마다 1씩 증가시켜 줄 수 있음.
  • 결과적으로, 이 알고리즘의 마지막에서 n은 방 안에 있는 사람 수가 됨.

의사코드예시

[더 복잡하지만 효율적인 의사코드]

  • 방 안의 모든 사람을 일으켜 세우고 그들에게 숫자 1을 부여한다.
  • 일어서 있는 다른 사람과 짝을 짓고 그들이 갖고있던 숫자를 더한 후 한 사람씩 앉는다.
  • 이 과정을 한 사람이 남을때까지 반복하면 마지막 남은 사람에게 할당된 숫자가 방 안의 총 인원 수가 될 것이다.
  • 들여쓰기
    • 어떤 코드 블록이 어떤 문장에 포함되는지 알 수 있도록 하는 것.
  • 위의 예를 보면 4~9번줄은 3번 줄에 작성된 상태가 될때까지 반복되어야 한다는 뜻.
  • 9번째 줄의 ‘앉고 아무것도 하지 마라’는 8번째 줄의 ‘만약 당신이 선택된다면’일 경우에 실행되어야 함.

의사 코드의 요소

  • 의사 코드를 작성하는 올바른 방법이나 어떻게 작성해야 하는지 정의한 문법은 없음.
  • 할당, 들여쓰기, 조건문, 반복문 등 프로그래밍 언어에서도 중요한 개념을 포함하기도 함.
  • 따라서, 의사코드는 문법 걱정 없이 알고리즘을 표현할 수 있는 유용한 방법이고
  • 프로그램의 논리를 이해하는데 더 효과적인 방법이다.

Comments