I about me

[이것이 코딩테스트다] 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기 (1) 본문

Algorithm/이것이 코딩테스트다!

[이것이 코딩테스트다] 1. 코딩 테스트 출제 경향 분석 및 파이썬 문법 부수기 (1)

ssungni 2024. 7. 15. 12:34

해당 강의를 참고하여 공부를 진행했습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC

 

지극히 개인적으로 헷갈렸던 부분이나 몰랐던 내용에 대해서만 정리했습니다.


1강: 코딩 테스트 개요 및 출제 경향

https://github.com/ndb796/Python-Competitive-Programming-Team-Notes?tab=readme-ov-file

 

GitHub - ndb796/Python-Competitive-Programming-Team-Notes: Python Library for Programming Competition

Python Library for Programming Competition. Contribute to ndb796/Python-Competitive-Programming-Team-Notes development by creating an account on GitHub.

github.com

 

2강: 알고리즘 성능 평가

# 시간복잡도

# 빅오법

array = [3, 5, 1, 2, 4] # N개의 데이터
sum = 0
for i in array: # O(N)
    sum += i
print(sum)
array = [3, 5, 1, 2, 4] # N개의 데이터
sum = 0
for i in array: # O(N^2)
    for j in array:
        temp = i * j
        print(i * j)

 

# 시간 제한

[출처] 이것이 코딩테스트다

 

# 알고리즘 문제 해결 과정

  1. 지문 읽기 및 컴퓨터적 사고
  2. 요구사항(복잡도) 분석
  3. 문제 해결을 위한 아이디어 찾기
  4. 소스코드 설계 및 코딩

# 시간 측정 방법

import time
start_time = time.time() # 측정 시작

# 프로그램 소스코드
end_time = time.time() # 측정 종료
print("time:", end_time - start_time)


3강: 파이썬 문법 - 수 자료형

02_실수형.py

# 소수부가 0일 때 0을 생략
a = 5.
print(a)

# 정수부가 0일 때 0을 생략
a = -.7
print(a)

 

03_지수표현방식.py

# 1000000000.0
a = 1e9
print(a)

# 752.5
a = 75.25e1
print(a)

# 3.954
a = 3954e-3
print(a)

 

04_실수형 더 알아보기.py

실수형일 때 조심해야한다.

그러므로 섬세한 조정이 필요하다.

a = 0.3 + 0.6
print(a) # 0.8999999999999999

if a == 0.9:
    print(True)
else:
    print(False) # False
b = 0.3 + 0.6
print(round(b, 4)) # 0.9

if round(b, 4) == 0.9:
    print(True) # True
else:
    print(False)


4강: 파이썬 문법 - 리스트 자료형

m = 4
n = 3
array = [[0] * m  for _ in range(n)]
print(array) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
array[1][1] = 5
print(array) # [[0, 0, 0, 0], [0, 5, 0, 0], [0, 0, 0, 0]]

아래는 잘못된 예시이다... 

array = [[0] * m] * n # 주소값이 같은 객체가 복사되는 것임
print(array) # [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
array[1][1] = 5
print(array) # [[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]

[[0] * m] * n 이렇게 하면 주소까지 같은 객체가 복사되는 것이므로 array[1][1] = 5를 하면, [[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]가 된다.


5강: 파이썬 문법 - 문자열, 튜플 자료형

튜플을 사용하면 좋은 점

  • 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
    • 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용합니다.
  • 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
    • 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용될 수 있습니다.
  • 리스트보다 메모리를 효율적으로 사용해야 할 때