728x90
반응형

자료형: 정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등

 

1강: 수 자료형

정수형(Integer)

: 정수를 다루는 자료형

  • 양의 정수, 음의 정수, 0

실수형(Real Number)

: 소수점 아래의 데이터를 포함하는 수 자료형

  • 변수에 소수점을 붙인 수 대입 -> 실수형 변수로 처리
  • 소수부 0 or 정수부 0인 소수 -> 0 생략하고 작성 가능

지수 표현 방식

: 유효숫자e^지수 = 유효숫자 *10^지수

  • e or E 이용한 지수 표현 방식 이용
    • e or E 다음에 오는 수는 10의 지수부 의미
    • ex. 1e9 -> 10의 9제곱(1,000,000,000)
  • 임의의 큰 수 표현하기 위해 사용
  • 최단 경로 알고리즘: 도달할 수 X  노드에 대하여 최단 거리 -> 무한(INF)로 설정
  • 가능한 최대값이 10억 미만 -> 무한(INF) 값으로 1e9 이용 가능


오늘날 가장 널리 쓰이는 IEEE754 표준: 실수형 저장 

-> 4바이트 or 8바이트의 고정된 크기의 메모리 할당 

=> 컴퓨터 시스템은 실수 정보 표현하는 정확도 한계

ex. 10진수 체계: 0.3 + 0.6 = 0.9

But, 2진수: 0.9 정확히 표현할 수 있는 방법 X

-> 컴퓨터 최대한 0.9와 가깝게 표현하지만, 미세한 오차 발생

 

개발 과정에서 실수 값 제대로 비교 X -> 원하는 결과 얻지 못할 수 있음

-> round() 함수 권장

ex. 123.456 소수 셋째 자리에서 반올림 -> round(123.456, 2) => 123.46

수 자료형의 연산

  • 수 자료형에 대해 사칙연산과 나머지 연산자 사용 ↑
  • 나누기 연산자(/) 주의해서 사용
    • 나누기 연산자(/) -> 나눠진 결과를 실수형으로 반환
    • ex. 7 / 3 = 2.333333
  • 다양한 로직 설계할 때 나머지 연산자(%) 이용해야 할 때 ↑
    • ex. a가 홀수인지 체크해야 하는 경우
    • ex. 7 % 3 = 1
  • 몫을 얻기 위해 몫 연산자(//) 사용
    • ex. 7 // 3 = 2
  • 이외: 거듭 제곱 연산자(**) 등
    • ex. 5 ** 3 = 125

2강: 리스트 자료형

: 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용하는 자료형

  • 사용자 입장에서 C or Java의 배열(Array) 기능 및 연결 리스트와 유사한 기능 지원
  • C++의 STL vector와 기능적으로 유사
  • 리스트 = 배열 = 테이블

리스트 초기화

  • 대괄호([])안에 원소 넣어 초기화, 쉼표(,)로 원소 구분
  • 비어 있는 리스트 선언 -> list() or [] 이용
  • 리스트의 원소에 접근 -> 인덱스(index) 값을 괄호에 넣음
    • 인덱스: 0부터 시작

리스트의 인덱싱과 슬라이싱

  • 인덱싱(Indexing): 인덱스 값 입력 -> 리스트의 특정한 원소에 접근하는 것
    • 파이썬의 인덱스 값: 양의 정수, 음의 정수 모두 사용 가능
    • 음의 정수 -> 원소 거꾸로 검색
      • ex. a[-1] // 뒤에서 첫 번째 원소 출력
  • 슬라이싱(Slicing): 연속적인 위치를 갖는 원소들을 가져와야 할 때
    • 대괄호 안에 콜론(:) 넣어 시작 인덱스와 끝 인덱스 설정
    • 끝 인덱스는 실제 인덱스보다 1을 크게 설정

리스트 컴프리헨션

  • 리스트를 초기화하는 방법 중 하나
    • 대괄호 안에 조건문과 반복문 적용 -> 리스트 초기화 가능
    • ex. array = [i for i in range(10)] // 0 ~ 9까지 수를 포함하는 리스트
  • ex. N X M 크기의 2차원 리스트 초기화
    • 좋은 예시: array = [[0] * m for _ in range(n)]
    • 잘못된 예시: array = [[0] * m] * n
      • 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식
Q: 언더바 언제 사용?
A: 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_) 자주 사용

리스트 관련 기타 메서드


3강: 문자열, 튜플 자료형

문자열 자료형

  • 문자열 변수 초기화: 큰따옴표(“) or 작은 따옴표(‘) 이용
  • 문자열 안에 큰따옴표 or 작은따옴표 포함되어야 하는 경우
    • 전체 문자열을 큰따옴표로 구성 -> 내부적으로 작은따옴표를 포함 가능
    • 전체 문자열을 작은따옴표로 구성 -> 내부적으로 큰따옴표를 포함 가능
    • 혹은 백슬래시(\) 사용 -> 큰따옴표 or 작은따옴표 원하는 만큼 포함 가능

문자열 연산

  • 문자열 변수에 덧셈(+) 이용 -> 문자열 더해져 연결(Concatenate)
  • 문자열 변수를 특정한 양의 정수와 곱하는 경우, 문자열이 그 값만큼 여러 번 더해짐
  • 인덱싱과 슬라이싱 가능
    • 특정 인덱스 변경 불가능(immutable)

튜플 자료형

  • 리스트와 유사하지만 다음과 같은 문법적 차이
    • 한 번 선언된 값 변경 X
    • 리스트: 대괄호([]) 이용, 튜플: 소괄호(()) 이용
  • 리스트에 비해 상대적으로 공간 효율적

튜플 사용하면 좋은 경우

  • 서로 다른 성질의 데이터 묶어서 관리해야 할 때
    • 최단 경로 알고리즘: (비용, 노드 번호) 형태로 튜플 자료형 자주 사용
  • 데이터의 내열을 해싱(Hashing)의 키 값으로 사용해야 할 때
    • 튜플은 변경 불가능 -> 리스트와 다르게 값으로 사용 가능
  • 리스트보다 메모리 효율적으로 사용해야

4강: 사전, 집합 자료형

사전 자료형

  • 키(Key)와 값(Value)의 쌍을 데이터로 가지는 자료형
    • 앞서 다루었던 리스트나 튜플이 값을 순차적으로 저장하는 것과 대비
  • 사전 자료형: 키와 값의 쌍
    -> 데이터로 가짐, 원하는변경 불가능한(Immutable) 자료형 키로 사용 가능
  • 사전 자료형: 해시 테이블(Hash Table) 이용
    -> 데이터의 조회 및 수정에 있어 O(1) 시간에 처리 가능

사전 자료형 관련 메서드

  • 키와 값을 별도로 뽑아내기 위한 메서드 지원
    • 키 데이터만 뽑아 리스트로 이용: key() 함수
    • 데이터만 뽑아 리스트로 이용: values() 함수

집합 자료형

  • 특징
    • 중복 허용 X
    • 순서 X

 

  • 리스트 or 문자열 이용해서 초기화
    • set() 함수 이용
      • Ex. data = set([1, 1, 2, 3, 4, 4, 5])
  • or 중괄호 ({})안에 각 원소를 콤마(,) 기준으로 구분하여 삽입 -> 초기화
    • ex. data = {1, 1, 2, 3, 4, 4, 5}
  • 데이터의 조회 및 수정에 있어 O(1) 시간에 처리 가능

집합 자료형의 연산

  • 기본적인 집합 연산: 합집합, 교집합, 차집합 연산 등
    • 합집합: 집합 A에 속하거나 B에 속하는 원소로 이뤄진 집합 (A B)
      • ex. print(a | b) // or
    • 교집합: 집합 A에 속하고 B에 속하는 원소로 이뤄진 집합 (A B)
      • ex. print(a & b) // and
    • 차집합: 집합 A의 원소 중에서 B에 속하지 않는 원소로 이뤄진 집합 (A - B)
      • ex. print(a - b)

사전 자료형과 집합 자료형의 특징

  • 리스트 or 튜플: 순서O -> 인덱싱 ~> 자료형 값 얻을 수 O
  • 사전 자료형과 집합 자료형: 순서 X -> 인덱싱 ~> 값을 얻을 수 X
    • 사전의 (Key) or 집합의 원소(Element) 이용해 O(1) 시간 복잡도로 조회

5강: 기본 입출력

  • 모든 프로그램은 적절한 (약속된) 입출력 양식 가지고 있음
  • 프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것
  • ex. 학생의 성적 데이터가 주어지고, 이를 내림차순으로 정렬한 결과를 출력하는 프로그램

자주 사용되는 표준 입력 방법

  • input() 함수: 한 줄의 문자열 입력 받는 함수
  • map() 함수: 리스트의 모든 원소에 각각 특정한 함수 적용할 때 사용
  • ex. 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용
  • list(map(int, input().split()))
  • ex. 공백을 기준으로 구분된 데이터 개수 많지 X
  • a, b, c = map(int, input().split())

빠르게 입력 받기

  • 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우
  • sys 라이브러리 -> sys.stdin.readline() 메서드 이용
    • 단, 입력 후 엔터가 줄 바꿈 기호로 입력되므로 rstrip() 메서드 함께 사용
    • import sys
    • data = sys.stdin.readline().rstrip() // 문자열 입력 받기

자주 사용되는 표준 출력 방법

  • 기본 출력: print() 함수 이용
    • 변수를 콤마(,) 이용하여 띄어쓰기로 구분하여 출력 가능
  • print()는 기본적으로 출력 이후에 줄 바꿈 수행
    • 바꿈 원하지 X 경우: end 속성 이용

f-string 예제

  • 파이썬 3.6부터 사용 가능, 문자열 앞에 접두사 ‘f’ 붙여 사용
  • 중괄호 안에 변수명 기입 -> 간단히 문자열과 정수 함께 넣을 수 있음
    • ex. print(f”정답은 {answer}입니다.”) 

6강: 조건문

  • 프로그램의 흐름을 제어하는 문법
  • 조건문 이용 -> 조건에 따라 프로그램 로직 설정 가능

들여쓰기

  • 코드의 블록(Block)을 들여쓰기(Indent)로 지정
  • 탭을 사용하는 쪽과 공백 문자(space)를 여러 번 사용하는 쪽으로 두 진영 있음
  • 파이썬 스타일 가이드라인: 4개의 공백 문자를 사용하는 것을 표준으로 설정

조건문의 기본 형태

  • 조건문의 기본적인 형태: if ~ elif ~ else
    • 사용할 elif or else 부분은 경우에 따라 사용하지 않아도 

비교 연산자

  • 특정한 두 값을 비교할 때 이용 가능
    • 대입 연산자(=) 같음 연산자(==) 차이점 유의

논리 연산자

  • 논리 (True/False) 사이의 연산 수행할 사용

기타 연산자

  • 다수의 데이터를 담는 자료형을 위해 in 연산자와 not in 연산자 제공
    • 리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능

pass 키워드

  • 아무것도 처리하고 싶지 않을 때 pass 키워드 사용
  • ex. 디버깅 과정에서 일단 조건문의 형태만 만들어 놓고 조건문을 처리하는 부분은 비워놓고 싶은 경우

조건문의 간소화

  • 조건문에서 실행될 소스코드가 한 줄인 경우, 굳이 줄 바꿈 하지 않고도 간략하게 표현 가능
  • 조건부 표현식(Conditional Expression): if ~ else문을 한 줄에 작성할 수 있도록 해줌

파이썬 조건문 내에서의 부등식

  • 다른 프로그래밍 언어와 다르게 파이썬은 조건문 안에서 수학의 부등식 그대로 사용 가능
  • ex. x > 0 and x < 20과 0 < x < 20은 같은 결과 반환

7강: 반복문

  • 특정한 소스코드를 반복적으로 실행하고자 할 때 사용하는 문법
  • while문과 for문, 어떤 것을 사용해도 상관 없음
    • 다만, 코딩 테스트 실제 사용 예시 -> for문이 간결한 경우

무한 루프

  • 무한 루프(Infinite Loop): 끊임없이 반복되는 반복 구문을 의미
    • 코딩 테스트에서 무한 루프 구현할 일 거의 X
    • 반복문 작성한 항상 반복문 탈출할 있는지 확인

for문

  • 구조: 특정한 변수를 이용하여 ‘in’ 뒤에 오는 데이터(리스트, 튜플 등)에
    포함되어 있는 원소를 첫 번째 인덱스부터 차례대로 하나씩 방문
    • for 변수 in 리스트: 실행할 소스 코드
  • 연속적인 값을 차례대로 순회할 때 range() 주로 사용
    • range(시작값, 끝값 + 1)
    • 인자를 하나만 넣으면 자동으로 시작값 = 0

continue 키워드

  • 반복문에서 남은 코드의 실행 건너뛰고, 다음 반복 진행하고자 할 때 사용

break 키워드

  • 반복문을 즉시 탈출하고자 break 사용

8강: 함수와 람다 표현식

함수

  • 함수(Function): 특정한 작업을 하나의 단위로 묶어 놓은 것을 의미
  • 함수 사용 -> 불필요한 소스코드의 반복 줄일 수 있음 

종류

  • 내장 함수: 파이썬이 기본적으로 제공하는 함수
  • 사용자 정의 함수: 개발자가 직접 정의하여 사용할 수 있는 함수

정의하기

  • 프로그램에는 똑같은 코드가 반복적으로 사용되어야 할 때 많음
  • 함수 사용 -> 소스코드의 길이 줄일 수 있음
    • 매개변수: 함수 내부에서 사용할 변수
    • 반환 값: 함수에서 처리된 결과 반환
  • def 함수명(매개변수)
           실행할 소스코드
           return 반환 값

파라미터 지정하기

  • 파라미터의 변수를 직접 지정할 수 있음
    • 이 경우 매개변수의 순서 달라도 상관 없음
  • def add(a, b):
           print(‘함수의 결과: ‘, a + b)
  • add(b = 3, a = 7)

global 키워드

  • global 키워드로 변수를 지정
    -> 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조

여러 개의 반환 값

  • 파이썬 함수는 여러 개의 반환 값 가질 수 있음

람다  표현식

  • 람다 표현식을 이용하면 함수를 간단하게 작성할 수 있음
    • 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징
  • print(add(3, 7)) // 일반적인 add() 메서드 사용
  • print(lambda a, b: a + b)(3, 7)) // 람다 표현식으로 구현한 add() 메서드

9강: 자주 사용되는 표준 라이브러리

실전에서 유용한 표준 라이브러리

  • 내장 함수: 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공
    • 파이썬 프로그램을 작성할 없어서는 되는 필수적인 기능을 포함하고 있음
  • itertools: 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능을 제공
    • 특히, 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용
  • heapq: 힙(Heap) 자료구조를 제공
    • 일반적으로 우선순위 기능을 구현하기 위해 사용
  • bisect: 이진 탐색(Binary Search) 기능을 제공
  • collections: 덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함
  • math: 필수적인 수학 기능을 제공
    • 팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 함수부터 파이(pi) 같은 상수를 포함

순열과 조합

  • 모든 경우의 수를 고려해야 할 때 어떤 라이브러리를 효과적으로 사용할 수 있을까
  • 순열: 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것
    • {‘A’, ‘B’, ‘C’}에서 3개를 선택하여 나열하는 경우: ‘ABC’, ‘ACB’, ‘BAC’, ‘BCA’, ‘CAB’, ‘CBA’
    • from itertools import permutations
    • from itertools import product // 중복 허용
  • 조합: 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것
    • {‘A’, ‘B’, ‘C’}에서 순서를 고려하지 않고 2개를 뽑는 경우: ‘AB’, ‘AC’, ‘BC’from itertools import
    • from itertools import combinations
    • combinations_with_replacement // 중복 허용

Counter

  • 파이썬 collections 라이브러리의 Counter는 등장 횟수를 세는 기능 제공
  • 리스트와 같은 반복 가능한(iterable) 객체가 주어졌을 때 내부의 원소가 몇 번씩 등장했는지 알려줌
  • from collections import Counter

최대 공약수와 최소 공배수

  • 최대 공약수 -> math 라이브러리의 gcd() 함수 이용
  • 최소 공배수 -> math 라이브러리의 lcm() 함수 이용

 

 

728x90
반응형
김앩옹