본문 바로가기
알고리즘

Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편 - 01 알고리즘 기초 요약

by 느림보어른 2021. 5. 22.

알고리즘

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

for 문

  • for 문 안에 if 문을 두는 것은 효율적이지 않다.

while VS for

  • 변수가 하나만 있을 때는 while 문보다는 for문을 사용하는 것이 더 좋다.

Break

파이썬은 사후 판단 반복문(do~while 문, repeat~until 문 등)을 제공하지 않으므로 break 문을 사용하여 무한 루프를 탈출해야 한다.

반복문이 종료된 후 카운터용 변수의 값 차이(무한루프가 아니고 break문이 없는 경우)

while i <= n:  반복을 종료하면 i는 n+1
for i in range(0, n+1): 반복을 종료하면 i는 n

iterable 객체

반복할 수 있는 객체. 대표적으로 list, str, tuple이 있다.

두 값 교환하기 

a, b = b, a

  1. 우변의 b, a에 의해 두 값을 압축한 튜플(b, a)이 생성된다.
  2. 대입할 때 튜플 (b, a)를 다시 풀어 b, a로 만든 다음 각각 a와 b에 대입한다.

언더스코어('_')

파이썬에서 무시하고 싶은 값을 언더스코어('_') 표현할 수 있다.
예를 들어

for _ in range(n // 2):
	print('+-', end='')


위 코드에서 range() 함수가 for문을 순환하며 반환하는 값(인덱스)을 언더스코어로 무시했다.

드 모르간 법칙(De Morgan's laws)

'각 조건을 부정하고 논리곱을 논리합으로, 논리합을 논리곱으로 바꾸고 다시 전체를 부정하면 원래의 조건과 같다.'

  • x and y와 not(not x or not y)의 논리 값은 같다.
  • x or y와 not(not x and not y)의 논리 값은 같다.

파이썬의 변수

파이썬에서는 데이터, 함수, 클래스, 모듈, 패키지 등을 모두 객체(object)로 취급한다.

객체는 자료형(data type)을 가지며 메모리(저장 공간)를 차지한다.

따라서 파이썬의 변수는 값을 갖지 않는다.

  • 변수는 객체를 참조하는 객체에 연결된 이름에 불과하다.
  • 모든 객체는 메모리를 차지하고, 자료형뿐만 아니라 식별 번호(identity, 다른 객체와 구별할 수 있는 객체의 고유번호)를 가진다.

예를 들어

>>> n = 17
>>> id(17)
140710805205776
>>> id(n)
140710805205776

위의 예시에서 정수 리터럴 17의 식별 번호와 n의 식별 번호는 동일함을 알 수 있다. 여기서 변수 n은 int형 17인 객체를 가리키는(저장하는 X) 역할을 한다.

즉, 다른 보통 프로그래밍 언어에서 변수란 값을 저장하는 상자라고 비유하는 것과 달리 파이썬의 변수는 객체를 참조하는 이름에 불과하다.