[Book Review] Python Algorithm Interview (1)
[Book Review] Python Algorithm Interview (1)
1. 코딩 테스트
종류
온라인 코딩 & 손코딩
온라인 코딩 테스트 플랫폼
- 해커랭크
- 코딜리티
- 리모트 인터뷰
- 프로그래머스
카카오
: 해커랭크 (테스트케이스 X), 일부는 하드웨어 현업 구현 문제
네이버
: 코딜리티
네이버 웹툰
: 해커랭크
라인
: 프로그래머스
신입공채
(네이버 카카오) : 프로그래머스
삼성전자
: 자체플랫폼, Visual Studio in Window,
준비물
연습장 필기도구
코드 스니펫
자주 쓰이는 동작들에 대한 코드 스니펫 준비
테스트 케이스
모든 테케 통과하도록 만들어야함
타임아웃
파이썬 – 알고리즘 최적화고민
IDE (통합개발환경) VS emacs vim ?
개발의 편의를 위해 IDE 선택
기타
- 예외 처리하기
- 문제별 풀이시간 정해두기
- REPL 자주 사용 (read evaluate priint loop)
- pycharm에선 reormat code로 쉽게 정렬가능
- 네이밍 컨벤션 : _ snake case
화이트보드 인터뷰 평가기준
문제해결 / 코딩 / 검증 / 커뮤니케이션
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
2. 알아두면 좋을 것들
자료형 명시
def fn ( a : int ) -> bool :
함수의 파라미터 a가 정수형 / 리턴값으로 true , false 반환
타입 오류 확인
mypy로 코딩 테스트 할 때 타입 오류 확인 가능
pip iinstall mypy
list comprehension
in list
list ( map ( lambda x : x + 10, [1,2,3] ) ) [ n * 2 for n in range (1, 10 + 1 ) if n % 2 == 1 ] 설명 : map은 전달받은 리스트를 하나씩 꺼내 함수에 적용시켜 새로운 리스트에 담아줌
in dictionary
a = { key : value for key, value in original.items() }
Generator
def get_natural_number () : n = 0 while True: n += 1 yield n ㅤ g = get_natural_number() for _ in range (0, 100): print (next (g) )
range
list ( range (5) ) [0,1,2,3,4] a = [ n for n in range ( 10000 ) ]
enumerate
여러가지 자료형 ( list, set, tuple 등 ) 을 인덱스를 포함한 enumerate 객체로 리턴
a = [1,2,3,4,5] list ( enumerate (a) ) [ (0,1), (1,2), (2,3), (3,4), (4,5) ] -> for i, v in enumerate (a) : print(i,v) ``
나머지
5 / 3 = 1.6666 (float) 5 // 3 = 1 (int) == int (5 / 3) 5 % 3 = 2 (나머지) divmod (5,3) = (1,2) (몫과 나머지)
print
print(‘A1’, ‘B2’, sep= ‘,’) // , 로 구분해서 출력 print(‘aa’, end=’ ’) // print 여러개 일열로 출력 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a=[‘A’, ‘B’] print(‘ ‘,join(a)) // 이어서 출력
포맷팅
idx = 1 fruit = “Apple” ㅤㅤ print(‘{0}’: {1}’.format(idx+1,fruit)) print(‘{}’: {}’.format(idx+1,fruit)) print( f’{idx + 1}: {fruit}’)
pass (오류를 방지)
class MyClass (object): def method_a(self): pass ㅤ def method_b(self): print(‘B’) ㅤ C = MyClass() locals
pprint
import pprint pprint.pprint(locals())
클래스 메소드 내부의 모든 로컬변수를 출력해주기 때문에 디버깅에 도움이됨
실용적인 코드를 위해 참고
파이썬의 PEP 8
파이썬 스타일 가이드
list 작성시 줄바꿈 적극 활용
함수 인수 불변객체 사용하기
def foo (a, b = None)
def foo (a, b: Oprional [Sequence] = None):
if 사용법
if not users: (len=0보다 안전, 길이가 없다는 뜻이 결국 값이 없다는 것)
if foo == 0: (정수 판별 시 비교대상이 되는 정수값을 직접 비교)
빅 오
점근적 실행 시간 표기시 많이 사용, 입력값 n이 무한대로 향할 때 함수의 실행 시간 추이
시간복잡도
: 알고리즘 수행 시 걸리는 시간을 설명하는 계산 복잡도
빅오
: 시간복잡도를 표현할 때 최고차항만을 표기
빅오
: 상한
빅오메가
: 하한
빅세타
: 평균
분할상환분석 (Amortized Analysis)
=상각 분석
최악의 경우를 여러 번 걸쳐 골고루 나눠주는 형태로 알고리즘의 시간복잡도 계산
Author And Source
이 문제에 관하여([Book Review] Python Algorithm Interview (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@anthony16/Book-Review-Python-Algorithm-Interview-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)