python/코딩테스트
[python] 이진탐색 라이브러리 bisect
이진탐색 알고리즘을 푸는 경우 유용한 bisect 라이브러리를 활용해본다. bisect_left(a,x) : 정렬된 순서를 유지하면서 배열 a에 x를 삽입할 가장 왼쪽 인덱스 반환 bisect_right(a,x) : 정렬된 순서를 유지하면서 배열a에 x를 삽입할 가장 오른쪽 인덱스 반환 bisect를 이용하여 값이 특정 범위에 속하는 데이터 개수 구하기 from bisect import bisect_left, bisect_right def count_by_range(a,left_value, right_value): right_index = bisect_right(a,right_value) left_index = bisect_left(a,left_value) return right_index - left_..
[python] 예외처리 / EOF / try,except
늘 조건문을 작성할 때는 if/else로 작성했기에 오류에 대한 예외처리를 해주는 try/except를 사용할 때는 흔하지 않았다. 하지만 백준 A+B-4 문제를 해결할 때는 try/except과정이 필수적으로 요구되었기에 다시금 들여다볼 수 있었다. 또한 input()과, sys.stdin.readline()의 구체적인 차이까지 다시 숙지했다. 1) input()과 sys.stdin.readline() 우선 input()과 달리 굳이 sys.stdin.readline()을 쓰는 이유는 많은 양의 데이터를 받아오는 상황에서 보다 효율을 높이기 위해 사용한다. 그래서 input() 한 단어로 간결하게 불러올 수 있는 것도 import sys: sys.stdin.readline()으로 받아오는 것이다. 하지..
[python] zip함수 정리
프로그래머스로 문제를 풀고 나서 다른 사람들의 풀이를 볼 때 흔히 zip()함수를 쓰는 것을 볼 수 있다. 늘 리스트나 문자열의 원소를 for문을 돌려서 자료를 하나씩 빼곤 했는데 여러 원소를 한 번에 빼내야 하는 경우 zip함수의 가독성이 더욱 높다고 판단했다! 1) 여러 변수의 객체를 인자로 받아 차례로 반환 * for문을 사용하는 경우 numbers = [1,2,3] letters = ['A','B','C'] for i in range(3): pair = (number[i],letters[i]) print(pair) *zip 함수를 사용하는 경우 number = '12345' upper = 'ABCDE' lower = 'abcde' for n,u,l in zip(number, upper, lower..
[python] 재귀함수 파헤치기
코딩테스트를 위해서는 알고리즘과 자료구조 공부가 필수적이라고 생각해 알고리즘 공부를 하고 있다. 여러 내용들 중에도 재귀함수가 은근 헷갈리고 어렵게 다가와 복습 겸 정리해보려고 한다. 우선 공부에 활용한 도서는 '모두의 알고리즘 with 파이썬'으로 '더북' 사이트에서는 각 챕터별로 내용이 요약되어 있어 해당 사이트를 활용하고 있다. https://thebook.io/006935/ 더북(TheBook): 모두의 알고리즘 with 파이썬 thebook.io 재귀함수 ? 우선 재귀함수란 함수가 자기 자신을 다시 호출하는 것을 뜻하는 함수이다. 가장 기본적인 예시로 def hello(): print('hello') hello() ## 함수 다시 호출 hello() 좋지 않은 예시이기는 하지만 이를 출력하면 '..