Study

[묘공단]파이썬 스터디 1주차

A란 2023. 11. 24. 23:46

코딩테스트엔 꾸준히 많이 풀어보는게 길이라고 한다.  코딩테스트를 혼자 준비하기엔 나태해질 것 같아 좋은 기회가 생겨 스터디를 시작하게 되었다. 

나의 장기적인 목표는 직장을 다니면서도 안주하지않고 공부하는 습관을 들이는 것이다. 그러기 위해 앞으로 화이팅하며 나아가고자 한다.

 

파이썬 코딩테스트 책

 

스터디 다짐 : 코딩스터디의 과제를 기한내에 빠짐없이 참여하며, 따로 추천해준 추가 문제 최소1문제 이상 풀어보기

이 글은 골든래빗 코딩 테스트 합격자 되기 파이썬 편의 0장 ~ 4장 써머리입니다.

 

1. 효율적인 코딩테스트 준비

- 언어 선택 : 파이썬

- 테스트 준비 사이트 : 프로그래머스 (+ LeetCode)

코딩테스트를 볼때 가급적 파이썬으로 준비하라고 되어있다. 정답은 없다.난 처음 개발을 배웠을때부터 파이썬으로 했기때문에 파이썬으로 준비하고 있지만, 자바나 다른 언어로도 코테를 준비해야한다는 말을 듣고 다른언어로도 공부를 해야겠다고 생각했다.

 

여기서 핵심은 코딩테스트는 시험이 아니라 문제풀이 능력이 핵심이라는 것이다.

 

1) 문제 분석 연습하기

  • 문제 쪼개서 분석 & 제약사항 파악 & 테스트케이스 추가
  • 입력값을 분석. : 입력값 크기 확인하기
  • 핵심 키워드를 파악. : 핵심키워드 파악을 통해 특정 알고리즘 알아내기
  • 데이터 흐름이나 구성을 파악.

 

2) 의사 코드로 설계하는 연습하기

의사 코드는 프로그램의 논리를 설명하고 알고리즘을 표현하기 위해 작성한 일종의 지침이다.

  • 세부 구현이 아닌 동작 중심
  • 문제 해결 순서로 작성 : 의사코드 자체가 실제 구현할 코드의 주석이 되기도 함.
  • 충분히 테스트하기.

 

2. 알고리즘 효율 분석 

알고리즘 선정 기준은 시간복잡도를 보고 선정해야 한다. 

시간 복잡도(Time Complexity)란, 알고리즘의 성능을 나타내는 지표로, 입력 크기에 대한 연산 횟수의 상한을 의미한다.

 

알고리즘 수행 시간 측정 방법

  • 절대 시간 측정 
  • 시간 복잡도 측정 : 값이 나올때까지의 연산횟수.

 

코딩테스트에서는 최악의 경우도 가정해야 하므로,빅오 표기법 에 대해 알아보자.

  • 빅오 표기법

예를 들어 어떤 프로그램의 연산 횟수가 f(x) = 2x2 + 3x + 5라면 시간 복잡도를 O(x2)과 같이 표현.

함수의 표현에서 최고 차항만 남김.

 

시간복잡도 계산하기 : 문제 정의 -> 연산 횟수 측정 -> 시간복잡도 분석

** 왜 시간 초과가 발생하는지 원인을 명확히 인지하고 공부 **

 

3. 코딩테스트 필수 문법

1) 데이터 타입 

  • 기본 데이터 타입 : 정수형, 부동소수형, 문자열 타입

엡실론을 포함한 연산에 주의.

엡실론 : 부동소수형 데이터를 이진법으로 표현하기에 표현과정에서 오차 발생.

  • 컬렉션 데이터 타입 : 리스트, 튜플, 셋, 리스트

이뮤터블 : 기본타입, 문자열, 튜플

뮤터블 : 리스트, 딕셔너리, 셋

 

2) 함수

  • 람다식 : 함수를 더 간단하게 표현하는 방식,익명 함수를 만드는데 사용. 
num = [1,2,3,4,5]
s = list(map(lambda x:x**2,num) #람다식 넘기기
print(s) #[1,4,9,16,25]