본문 바로가기
728x90

IT 개인학습/이것이 취업을 위한 코딩테스트다 with 파이썬12

Stack, Queue, Recursive Function " 그래프를 탐색하기 위한 대표적인 두 가지 알고리즘 " 탐색(Search)이란??? - 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 - 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. - DFS / BFS를 제대로 이해하려면 기본 자료구조인 stack과 queue에 대한 이해가 전제되어야함 자료구조(Data Structure)란??? - 데이터를 표현하고 관리하고 처리하기 위한 구조 - Stack과 Queue는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성됨 ## Python에서 스택을 이용할 때에는 별도의 라이브러리 사용할 필요가 없다. why?? append(), pop() 메서드를 이용하면 스택 자료구조와 동일하게 동작한다. * 삽입(Push.. 2022. 8. 13.
Implementation(구현) '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' - 개발할 때 프로그래밍 언어의 문법에 능숙하고 코드 작성 속도(타이핑)가 빠른 사람을 보고 "피지컬이 좋다" 라고 함 => 구현 유형의 문제는 "피지컬을 요구하는 문제"라고도 할 수 있음 1. 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 2. 특정 소수점 자리까지 출력해야 하는 문제 3. 문자열이 입력으로 주어졌을 때 문자 단위로 끊어서 리스트에 넣어야(=파싱을 해야 하는) 하는 문제 "Parsing???" - 언어학에서 parsing은 구문 분석이라고도하며 문장을 그것을 이루고 있는 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정하는 것 https://na27.tistory.com/230 Parsing (파싱) .. 2022. 8. 11.
Greedy(탐욕) ' 현재 상황에서 지금 당장 좋은 것만 고르는 방법 ' ' 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 ' - 최단 경로를 빠르게 찾아야 하는 문제는 플로이드 워셜(Floyd-Warshall) or 다익스트라(Dijkstra) 알고리즘을 알고 있어야한다. 특히, 다익스트라 알고리즘은 그리드 알고리즘으로 분류됨 - 그리디 알고리즘이면서도 ' 암기 ' 가 필요한 알고리즘 - But 단순 암기를 통해 모든 문제를 대처하기는 어렵다는 점을 이해하자 1. 바로 문제 유형을 파악하기 어렵다면 그리디 알고리즘을 의심하고, 문제를 해결할 수 있는 탐욕적인 해결법이 존재하는지 고민 2. 그리디 알고리즘으로 해결 방법을 찾을 수 없다면??? -> 다이나믹 프로그래밍, 그래프 알고리즘 고려 # 거스름돈 .. 2022. 8. 9.
sys.stdin.readline(), Python3와 PyPy3 입력의 개수가 많은 경우에는 단순히 input() 함수를 그대로 사용하지는 않는다. 파이썬의 기본 input() 함수는 동작 속도가 느려서 시간 초과로 오답 판정을 받을 수 있기 때문이다. import sys data = sys.stdin.readline() # hello world print(data) hello world # 줄 바꿈 공백 생김 data = sys.stdin.readline().rstrip() print(data) hello world # ex input = sys.stdin.readline n, m = map(int, input().split()) ### map = 각 원소의 어떤 함수를 적용할지 설정할 수 있음 = map 사용후 바로 활용하는 경우에는 list()를 같이 적용해줘야.. 2022. 8. 5.