Algorithm - 1장

SSO·2023년 5월 5일
0

Coding Test & Algorithm

목록 보기
9/17

기존에 알고리즘 과목을 수강도 했었고 무지한 건 아니지만 알고리즘의 기초부터 찬찬히 다시 시작을 해보려고 한다. 제일 기본적인 연산자와 반복문에 대해서 정리해보려고 한다.
사용할 언어는 Python이다.

간단한 예제코드를 살펴보자
아래의 코드는 세 개의 정수를 입력받고 그 중 최대값을 구하는 예제이다.

a = int(input('정수 a의 값을 입력하세요: '))
b = int(input('정수 b의 값을 입력하세요: '))
c = int(input('정수 c의 값을 입력하세요: '))

maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c

print('최대값은 {maximum}입니다.')

위의 코드에서 최대값을 구하는 과정은

maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c

이 부분이다.
이 행들은 순차적으로 실행된다. 이렇게 한 문장씩 순서대로 처리되는 구조를 순차 구조(sequential structure)라고 한다.

int()
int함수는 int(문자열)처럼 문자열을 전달받는 함수이다. 위의 코드에서 a,b,c는 정수이다. 하지만 스트링으로 입력을 받기 때문에 int함수를 사용해서 10진수 정수형으로 변환해준 것이다.
2진수, 8진수, 10진수, 16진수를 나타내는 문자열을 각각 정수로 변환하고자 할 때에는 int(문자열, 진수)와 같이 2개의 인수를 넣어주면 된다.
비슷하게는 float()함수가 있는데 이 함수는 실수형을 반환한다.

알고리즘이란 어떠한 문제를 해결하기 위해 정해 놓은 일련의 절차이다.
올바른 알고리즘이란 어떠한 경우에도 실행 결과가 똑같이 나오는 것을 말한다.



복합문

if문 혹은 while문 등의 복합문의 첫 부분은 if나 while과 같은 키워드로 시작해 콜론(:)으로 끝난다.
이 부분을 헤더라고 한다.
콜론(:)의 의미는 바로 뒤에 스위트가 이어진다는 것을 의미한다.

스위트(suite) : 헤더와 한 세트로 따라다니는 실행문


복합문 작성 시 지켜야 하는 규칙

  • 복합문의 스위트는 반드시 행마다 같은 수준의 들여쓰기를 해야 한다. (공백 4개 권장)
  • 단순문이 두 개 이상이라면 세미콜론(;)으로 구분하여 헤더와 동일 행에 둘 수 있다.
  • But, 스위트가 복합문이면 헤더와 스위트를 같은 행에 포함시킬 수 없다.


연산자와 피연산자

  • +나 - 등의 기호를 산술 연산자
  • 연산 대상을 피연산자
  • Example. a > b에서 a와 b는 피연산자, >는 연산자이다.

연산자의 종류는 피연산자의 개수에 따라서 3가지로 분류된다.

  • 단항연산자(unary operator) : 피연산자 1개 example. -a
  • 이항연산자(binary operator) : 피연산자 2개 example. a < b
  • 삼항연산자(ternary operator) : 피연산자 3개 example. a if b else c

a if b else c라는 연산자의 의미는 b를 평가한 값이 true라면 a를, false라면 c를 반환한다.



순서도 기호 살펴보기

순서도(flowchart)는 문제를 정의, 분석하고 해결하는 방법을 그림으로 표현한다.

프로그램 순서도에는 다음과 같은 기호들이 있다.

  • 실제로 실행할 연산을 나타내는 기호
  • 제어 흐름을 나타내는 선 기호
  • 프로그램 순서도를 이해하거나 작성하는 데 편리한 특수 기호



반복하는 알고리즘 - while

예제. 1부터 n까지 정수의 합 구하기
사용자로부터 정수 n을 입력받고 1부터 n까지 정수의 합을 구하는 문제이다.

n = int(input('정수 n을 입력하세요: '))

# 결과값을 담을 변수 sum
sum = 0
# 1부터의 정수를 담당할 변수 num
num = 1

while num <= n :
    sum += num
    num += 1

print(sum)

코드를 짜 보며 알게 된 사실인데 파이썬에는 ++이나 -- 연산자가 존재하지 않는다는 것을 깨달았다..!

while문 반복 알아보기
어떤 조건이 성립하는 동안 반복해서 처리하는 것을 반복 구조(repetition structure)라고 한다. 일반적으로 loop라고 한다. 이때 while문은 실행하기 전에 반복을 계속할 것인지를 판단하는데 이를 사전 판단 반복 구조라고 한다.


반복하는 알고리즘 - for

# 1부터 n까지 정수의 합 구하기.

n = int(input('정수 n을 입력하세요: '))
sum = 0

for i in range (1, n+1):
    sum = sum + i
    i = i + 1

print(sum)

변수가 하나일 경우에는 while문 보다는 for문을 사용하는 것이 더 좋다.
for문을 사용할 시 range 다음에는 i가 작용하는 범위를 적어준다.
위의 예시처럼 range(1, n+1)로 적어주었다면 i는 1부터 n까지 작용한다.


range함수로 이터러블 객체 생성하기!

  • 이터러블 객체란 반복할 수 있는 객체를 의미한다. 파이썬의 대표적인 이터러블 자료형에는 list, str, tuple 등이 존재한다.
  • range(n) : a 이상 n 미만인 수를 차례로 나열하는 수열
  • range(a, b) : a 이상 b 미만인 수를 차례로 나열하는 수열
  • range(a, b, step) : a 이상 b 미만인 수를 step 간격으로 나열하는 수열

제일 기본적인 내용들이지만 오랜만에 할 때마다 헷갈리는 내용들이다,,
언제쯤 익숙해질까!!!!

다음 포스팅으로는 리스트와 문자열에 대해서 간략하게 정리해볼 예정이다.

profile
👩🏻‍💻👊🏻⭐️

0개의 댓글