crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Programmers
  • js
  • javascript error
  • 프론트엔드
  • 프로그래머스
  • js 기본
  • CSS
  • js기본
  • 알고리즘
  • 풀이
  • frontend
  • Algorithm
  • match()
  • css정렬
  • userfont
  • 느슨한타입
  • 자바스크립트
  • Javascript
  • let
  • css위치

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev
알고리즘/기타

파이썬 코테 준비 1 - 알고리즘 성능 평가

알고리즘/기타

파이썬 코테 준비 1 - 알고리즘 성능 평가

2022. 5. 11. 09:50
728x90
반응형

동빈나님의 이것이 코딩테스트다 책을 보면서 파이썬 코테 준비를 했었다.

코테 팁들을 원노트에 정리해뒀었는데 블로그에 옮겨야겠다는 생각이 들어 정리하게 되었다. 

 

온라인 개발 환경 리플릿 

 

Log In

Replit is a simple yet powerful online IDE, Editor, Compiler, Interpreter, and REPL. Code, compile, run, and host in 50+ programming languages.

replit.com

동빈나님의 팀 노트 

 

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

 

1. 복잡도

 

시간 복잡도

특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석

 

공간 복잡도

특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석

 

2. 빅오 표기법 

가장 빠르게 증가하는 항만을 고려한다.

연산횟수가 3N^3 + 5N^2 + 1,000,000인 알고리즘이 있다면

빅오표기법에서는 차수가 가장 큰 항만 남기므로 O(N^3)으로 표현된다.

 

O(1) > O(logN) > O(N) > O(NlogN) > O(N^2) > O(N^3) > O(2^n)

코테에서 시간제한은 통상 1~5초 가량이라고 생각하자. 문제에 시간제한이 명시되어 있지 않더라도 5초 안에 푸는게 합리적이다. PyPy를 지원하는 경우에는 때로는 C언어보다도 빠르지만 이를 항상 보장하지 않는다. 일반적으로 파이썬으로 먼저 제출 한 후에, 알고리즘에는 문제가 없는것 같다면 PyPy로 제출 해 보자.

 

 

 

3. 시간 제한

  1. N의 범위가 500인 경우 : 시간 복잡도 O(N3)인 알고리즘을 설계하면 문제를 풀 수 있다.
  2. N의 범위가 2000인 경우 : 시간 복잡도가 O(N2)인 알고리즘을 설계하면 문제를 풀 수 있다.
  3. N의 범위가 100,000인 경우 : 시간 복잡도가 O(NlogN)인 알고리즘을 설계하면 문제를 풀 수 있다.
  4. N의 범위가 10,000,000인 경우: 시간 복잡도가 O(N)인 알고리즘을 설계하면 문제를 풀 수 있다.

 

 

 

4. 알고리즘 문제 해결 과정

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

일반적으로 대부분의 문제 출제자들은 핵심아이디어로 캐치한다.

 

 

 

 

5. 수행시간 측정 소스코드 예제

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

# 프로그램 소스코드 

end_time = time.time() #측정 종료
print("time:", end_time - start_time) # 수행 시간 출력

 

 

 

 

728x90
반응형
저작자표시 (새창열림)
  •  
  • 1. 복잡도
  •  
  • 2. 빅오 표기법 
  • 5. 수행시간 측정 소스코드 예제
crystal_dev
crystal_dev
어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.