이것이 취업을 위한 코딩 테스트다 파이썬 후기
이번 추석 연휴에 커리어에 대한 고민을 하면서, 코딩 테스트를 준비해야겠다고 생각했습니다.
이전에 '파이썬 알고리즘 인터뷰' 책을 가볍게 대충 읽었지만, 문제는 자세히 보지 않았는데,
본격적으로 파이썬 코딩 테스트를 준비하고 싶어서 이 책을 골랐습니다.
파이썬 코딩 테스트 준비
이전엔 C언어로 코딩 테스트를 봤는데, 요즘 대기업 문제에 문자열 처리와 그래프 문제 등 다양한 알고리즘 문제가 출제되면서 파이썬 언어가 인기가 있다고 합니다. 실제로 파이썬을 공부해보니 문자열을 처리하는 과정이 너무나 쉽게 느껴졌습니다. C언어로 문제 풀 때, Quick sort도 외워서 문제를 풀었는데, 파이썬에서는 sort()로 list 정렬이 가능하고, 집합을 다루기도 쉬워서 알고리즘 문제를 푸는 데 정말 좋은 언어라고 생각했습니다.
이것이 코딩 테스트다 추천 대상
취업 준비를 하는 취준생, 이직 준비를 하는 회사원, 사내 테스트가 있어서 공부해야하는 회사원 등 알고리즘 문제를 풀어야 하는 분께 추천하는 책입니다. 제가 보기엔 '파이썬 알고리즘 인터뷰' 보다는 쉬운 책이어서 파이썬 알고리즘 문제를 처음 푸는 분이 보기 좋은 책입니다. 물론 저도 파이썬으로 문제를 많이 풀어보진 않았기 때문에 이 책을 선택했습니다.
교재 부록으로 코딩 테스트에서 사용하는 파이썬 문법을 소개하고, 코딩 테스트에 나오는 알고리즘을 소개해서 실전 알고리즘 문제 대비에 좋습니다. 책을 보는 방법도 친절하게 소개하는데요, 책을 보는 방법은 아래와 같습니다.
초급단계 공부 순서
1. 파이썬 문법 공부(부록 A)
2. 코드업에서 쉬운 문제부터 200문제 풀기 (https://codeup.kr/) (파이썬 100제)
3. 유형별 알고리즘 이론(2부)과 기출문제(3부) 학습
4. 백준 온라인 저지에서 유형별 문제 5개 이상 풀기
중급 단계 공부 순서
5. 책 완독 후 백준 온라인 저지에서 삼성 SW 역량테스트 문제집 풀기
6. 프로그래머스에서 카카오 문제집 풀기
7. 2-3부 주요 알고리즘 복습
60시간을 투자해서 완독 한다. 3번에 걸쳐 읽고, 30시간, 20시간, 10시간으로 쪼개서 속도를 올리며 읽으면 좋다고 합니다. 하루 3시간 알고리즘 문제 풀이 및 공부에 투자한다고 생각했는데, 문제 난이도가 적당해서 진도를 따라가는데 괜찮았습니다. 기존에 알고리즘을 알고 있는 분이라면 쉽게 진도를 뺄 수 있다고 생각합니다.
파이썬 1초 연산 시간
보통 알고리즘 문제에서 제한시간이 1초인 문제가 많이 나오는데, 파이썬 에서의 1초 동안 가능한 연산 수를 알아 두는 것이 좋습니다. C언어 문제를 풀 땐 1초에 1억 회 연산을 생각하고 풀었는데, 파이썬은 C언어 보다 느린 언어이기 때문에 1초에 2000만 번의 연산을 수행한다고 가정하면 됩니다. 따라서 제한시간이 1초인 문제가 있다면, N의 범위에 따른 시간 복잡도는 다음 표와 같습니다.
N의 범위 | 시간 복잡도 |
500 | N^3 |
2000 | N^2 |
100,000 | NlogN |
10,000,000 | N |
N이 500이라면, 최대 N의 세제곱을 사용하는 알고리즘을 사용할 수 있다는 뜻입니다.
문제를 읽었는데 데이터의 개수가 100만 개인 문제가 있다면 NlogN 이내의 알고리즘을 사용해야한다는 뜻입니다.
파이썬 공간 복잡도
보통 알고리즘 문제에서 메모리 사용량을 128~512MB로 제한하기 때문에 1000만 단위가 넘지 않도록 주의해야 합니다.
int a[1000] | 4KB |
int a[1000000] | 4MB |
int a[2000][2000] | 16MB |
그리디 알고리즘
그리디 알고리즘은 현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘입니다.
그리디 알고리즘 문제는 사전에 외우지 않아도 풀이가 가능하다는 장점이 있지만, 출제자가 마음먹고 어렵게 문제를 만들면 풀기 어렵다는 단점이 있습니다. 그리고 그리디 문제를 풀어보면 문제를 푸는 센스가 중요하다는 걸 알게 됩니다.
그리디 알고리즘은 보통 가장 큰 것, 가장 작은 것을 이용해서 문제를 해결하는 경우가 있기 때문에 sort를 사용해서 해결합니다. 정렬은 sort()로 간단하게 하고 문제를 보면 문제가 더욱 간단해집니다. 그리고 그리디 알고리즘을 사용하는 경우에는 정당성 검사를 꼭 해야 합니다. 떠오른 아이디어가 왜 최고의 아이디어인지 다시 점검해보면서 실력이 늘어나는 알고리즘이라고 생각합니다.
숫자 카드 게임
#n, m을 공백으로 구분하여 입력받기
n, m=map(int, input().split())
# data list 초기화
data=[]
for _ in range(n):
data.append(list(map(int, input().split())))
for i in range(n):
#data의 행정렬
data[i].sort()
ans=0
for i in range(n):
#data[i][0]을 보면서 [0]렬의 최대값 찾기
if ans < data[i][0]:
ans=data[i][0]
print(ans)
1이 될 때까지
어떠한 수 n이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행합니다.
1. N에서 1을 뺀다.
2.N을 K로 나눈다.
# n, k를 공백으로 구분하여 입력받기
n, k=map(int, input().split())
ans=0
#n이 1보다 큰 동안
while n>1:
#만약에 n이 k로 나누었을 때 나머지가 0인경우
if n%k ==0:
ans+=1
#n= n을 k로 나눈 몫
n=n//k
else:
ans+=1
n=n-1
print(ans)
작심1일 공부를 마치며
출근하기 전 한 시간에 그리디 알고리즘을 공부했습니다. 쉬운 문제라 그런지 3문제를 풀고, 해설을 보기에 어렵지 않았습니다. 아직 파이썬 문법은 미숙하지만, 이렇게 공부하다 보면 파이썬으로 쉽게 알고리즘 문제를 풀 수 있는 날이 곧 올 것이라고 생각했습니다. 파이썬도 언어니까 여러 번 쓰고 반복하면서 익숙해지는 것이 중요하다고 생각합니다. 앞으로 더욱 어려운 알고리즘이 남았는데, 하루에 최소 한 시간은 투자하면서 한 달 안에 완독하는 것이 목표입니다. 공부하고 싶은 분야가 너무 많네요 :D
'컴퓨터 IT > Python' 카테고리의 다른 글
파이썬 좌표 문제 입력 받는 방법(DFS, BFS) 퀵소트 코드 (0) | 2022.09.27 |
---|---|
파이썬 좌표 문제 쉽게 해결하는 방법 (2) | 2022.09.21 |
코딩 테스트 준비: 파이썬 알고리즘 인터뷰 후기 (1) (0) | 2022.08.09 |
matplotlib, plt scatter 완벽 정리: 파이썬 머신러닝 판다스 데이터 분석(3) (0) | 2022.08.06 |
Dataframe 기본 개념 정리: 파이썬 머신러닝 판다스 데이터 분석 (2) (0) | 2022.08.05 |
댓글
이 글 공유하기
다른 글
-
파이썬 좌표 문제 입력 받는 방법(DFS, BFS) 퀵소트 코드
파이썬 좌표 문제 입력 받는 방법(DFS, BFS) 퀵소트 코드
2022.09.27 -
파이썬 좌표 문제 쉽게 해결하는 방법
파이썬 좌표 문제 쉽게 해결하는 방법
2022.09.21 -
코딩 테스트 준비: 파이썬 알고리즘 인터뷰 후기 (1)
코딩 테스트 준비: 파이썬 알고리즘 인터뷰 후기 (1)
2022.08.09 -
matplotlib, plt scatter 완벽 정리: 파이썬 머신러닝 판다스 데이터 분석(3)
matplotlib, plt scatter 완벽 정리: 파이썬 머신러닝 판다스 데이터 분석(3)
2022.08.06