for i in range(10,0,-1) : ※ for i in range(10, 0) : 은 안된다~for i in reverser(range(10)) : 가능!\*최대한 요약해서, 보기 쉽게 작성하는 연습이 필요하다!이제 시작이니까 파이팅하잣문제 : 연도가 주어졌
파이썬에서 팩토리얼(!) 구현하기 재귀함수 없이 일반 for문으로 풀기~ 재귀함수 사용 *n이 0일 때, 1주는 것! 파이썬에서 List와 Tuple 비교 공통점 : 일련의 요소를 가지며, 요소의 순서를 관리한다. 차이점 : 튜플은 고정값, 수정이나 추가 불가능하다
파이썬 리스트를 복사할 때는 copy()함수가 있는데, 이는 얕은 복사에 해당한다. 즉, 진짜 원소를 복사하는 것이 아니라 원소가 참조하는 곳 까지만 복사를 한다. 그에 반해 copy module을 import해서 사용해야하는 deepcopy()함수는 원소까지 직접 복
무작위로 늘어놓은 데이터 집합에서 검색을 수행한다. 원소를 맨 앞에서부터 순서대로 스캔하면서 검색하는 유형이다.※ 원소의 값이 정렬되지 않은 배열에서 검색할 때 사용하는 유일한 방법이다. \+보초법 : 배열 맨 끝에 찾고자 하는 key값을 넣어주어, 검색 종료(검색
버블정렬 오름차순 알고리즘 아래 그림처럼 이웃한 원소를 비교하고, 필요하면 교환하는 정렬 작업 (일련의 비교&교환하는 과정을 패스라고 한다.) 위의 그림을 보면 맨 오른쪽에 위치한 원소들부터 비교해서 내려오는 것을 주목해야 한다. + 알고리즘 개선 1 : 안쪽 fo
재귀함수(Recursive Function)란? 어떤 함수에서 자기 자신을 다시 호출하여 작업을 사용하는 함수(알고리즘) (지애가 좋아하는 대사가 여기서 쓰일 줄이야..) 개념은 대략적으로 이해했는데, 적용과 응용이 힘들다. 완벽히 이해하지 못해서 그런 것이라고
대개 백준문제를 풀다보면 sys.stdin.readline()을 활용하는 게 input()보다 속도 면에서 유리하다고 써있는 경우가 많다. (ex : https://dailyheumsi.tistory.com/32) 그런데 sys.stdin과 sys.stdin.read
스택이란? 스택은 아래 그림처럼, 가장 마지막에 삽입한 데이터를 가장 먼저 사용하게 되는 것이다. 즉, 후입선출(LIFO=Last-In, First Out)의 특성을 갖는다. 선입후출(FILO)도 같은 의미겠죠? 추가적으로 자동 메모리 및 대부분 네트워크 프로토콜이 이
반복문 While 함수 활용법 아래 부분이 참(True)일 때, 계속해서 반복하는 구문이다. 이를 멈추기 위해서는 break를 활용하고, continue를 활용하면 그 아래 부분은 실행하지 않고 다시 while문 처음(조건문)으로 돌아간다. while문 안에서 c
우선순위 큐(Priority Queue)란? 큐의 기본개념에서 각 원소마다 우선순위가 추가되어, 원소들의 우선순위가 높은 것부터 Dequeue를 진행하는 자료구조다. 파이썬에서의 우선순위 큐 활용 힙(heap)이란 원래 "
이번 글은 DFS만 정리했고, BFS는 다음 글에서 정리했다.visited 등의 리스트 자료형으로 표현하고, True 와 False를 활용해 방문 여부를 남겨주면 편하다.Depth-First Search의 약자로 깊이-우선 탐색이라고도 불린다. 그래프에서 깊은 부분을
bisect의 사전적 의미는 이등분(2등분)이다. 파이썬에서 bisect 모듈을 활용하면 이분 탐색(이진 분할 알고리즘 활용)을 통해 정렬된 List에 'a'라는 값이 어디에 들어가면 되는지 index로 알려준다.bisect 모듈에는 크게 bisect()와 insort
위상 정렬이란? 위상 정렬(topological sorting)은 유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. (출처 : 위키백과) 위상 정렬은 정렬 알고리즘의 일종으로, 방향 그래프의 모든 노드를 '방향성에 거스리지 않
파이썬에서 zip(), eval() 함수는 많이 사용해본 적이 없는데 공부하다보니 유용할 것 같아 정리해본다. eval() 함수 (출처 : https://docs.python.org/ko/3/library/functions.html) expression, 즉 '식
나동빈님의 <이 것이 취업을 위한 코딩테스트다 with파이썬>(https://books.google.co.kr/books/about/%EC%9D%B4%EA%B2%83%EC%9D%B4\_%EC%B7%A8%EC%97%85%EC%9D%84\_%EC%9C%84%
나동빈님의 <이 것이 취업을 위한 코딩테스트다 with파이썬>(https://books.google.co.kr/books/about/%EC%9D%B4%EA%B2%83%EC%9D%B4\_%EC%B7%A8%EC%97%85%EC%9D%84\_%EC%9C%84%
파이썬 공식문서(https://docs.python.org/ko/3/howto/sorting.html)를 제 마음대로 정리 요약해보았습니다. list.sort()와 sorted() 함수 비교 list.sort()는 제자리에서 리스트를 수정하고 None을 반환한다.(아
오늘은 0-1knapsack 알고리즘에 대해서만 알아보자!아마, 분할가능(Fractional) 냅색 알고리즘은 언젠가 포스팅할 날이 오겠지..심지어, 냅색 알고리즘은 담을 물건들이 나뉠 수 있느냐 없느냐에 따라 또 나뉘어진다.분할가능 냅색 알고리즘(Fractional
DP 알고리즘 공부하면서, 이해 못하는 부분들이 꽤 많았는데.. 이건 정말 힘들다. 아직도 완벽히 이해 못했지만, 일단 이해하는 데까지 포스팅을 해 볼 생각이다. 훗날 완벽히 이해한 날이 왔을 때, 추가설명을 하면 너무 뿌듯할 것 같다. (미래의 나 파이팅) 어떤 분
트라이(Trie)란 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조다. 래딕스 트리(radix tree)나 접두사 트리(prefix tree)라고도 한다.retrieval(탐색)에서 trie를 따왔다고도 한다.이 자료구조를 활용해 검색어 자동완성, 사전
공통 원소가 없는 부분 집합들로 이루어진 트리 자료구조를 이용하여 union과 find를 사용하는 개념이라고 생각하면 된다. 이름에서 처럼 Union(합치기), Find(찾기) 연산에 유리한 점을 갖고있다.처음에 아래와 같이 1~8 숫자가 각각 있는 상황이라면, 공통
문제는 아래와 같다.가장 작은 음식들부터 섞는다고 했으니, heap을 사용하여 풀었다. 파이썬에서는 아래와 같이 내장모듈을 사용할 수 있다.파이썬에서 제공하는 heap은 최소 heap으로 구현돼어 있다는 것을 유의해야 한다.
아주 간단한 문제인데, 오랜만에 for문에 대해 헷갈려서 오래 걸렸다.바보같이.. 아래와 같이 j에 대해 반복문을 잘못 수행해버렸다.사소한 실수도 조심해야겠다.아래와 같이 정답 코드를 작성했다.
visited 등의 리스트 자료형으로 표현하고, True 와 False를 활용해 방문 여부를 남겨주면 편하다.Breadth-First Search의 약자로 너비-우선 탐색이라고도 불린다. 그래프에서 넓은 부분을 우선적으로 탐색하는 구조이다. 큐 구조를 활용한다.(DFS
문제는 아래와 같다. 아래 코드로 처음 작성했는데, 시간초과가 났다.시간복잡도를 O(n)보다 더 줄여야하는 문제였다. 해결 방법은 아래와 같이 생각하면 된다. 이렇게 생각하고, 아래와 같이 코드를 작성해서 완료했다.
문제는 아래와 같다.처음에는 파이썬에 있는 "string" in \[list]를 활용해서 풀었으나 시간초과로 인해 스택을 사용했다.문자열 관련 문제 중 스택을 활용해서 시간을 잘 줄일 수 있는 경우가 많으니.. 처음부터 잘 생각해서 풀자.첫 번째 풀이(시간 초과)스택