[이것이 코딩 테스트다 with 파이썬] | DFS & BFS | 그래프 탐색 알고리즘: DFS/BFS
·
Study/Python
그래프 탐색 알고리즘: DFS/BFS탐색(Search)이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말한다.대표적인 그래프 탐색 알고리즘으로는 DFS와 BFS가 있다.DFS/BFS는 코딩 테스트에서 매우 자주 등장하는 유형이므로 반드시 숙지해야 한다.스택과 큐 자료구조스택 자료구조먼저 들어 온 데이터가 나중에 나가는 형식(선입후출)의 자료구조이다.입구와 출구가 동일한 형태로 스택을 시각화할 수 있다.스택 동작 예시삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제()를 순서대로 표현한다.[Step 0] 초기 단계[Step 1] 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() [Ste..
[이것이 코딩 테스트다 with 파이썬] | 그리디 & 구현 | 구현: 시뮬레이션과 완전 탐색
·
Study/Python
구현(Implementation)구현이란, 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다.흔히 알고리즘 대회에서 구현 유형의 문제란 무엇을 의미할까?풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭한다.구현 유형의 예시는 다음과 같다.알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제적절한 라이브러리를 찾아서 사용해야 하는 문제일반적으로 알고리즘 문제에서의 2차원 공간은 행렬(Matrix)의 의미로 사용된다.for i in range(5): for j in range(5): print('(', i, ',', j, ')', end=' ') prin..
[이것이 코딩 테스트다 with 파이썬] | 그리디 & 구현 | 그리디
·
Study/Python
그리디 알고리즘그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다.일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다.그리디 해법은 그 정당성 분석이 중요하다.단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토한다. [문제 상황] 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶다.Q. 최적의 해는 무엇인가? [문제 상황] 루트 노드부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶다. Q. 단순히 매 상황에서 가장 큰 값만 고른다면 어떻게 될까?일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다.하지만 코딩 테스트에서의 대부분의 그리디 문제는 탐..
[이것이 코딩 테스트다 with 파이썬] | 코딩 테스트를 위한 파이썬 문법 | 실전에서 유용한 표준 라이브러리
·
Study/Python
실전에서 유용한 표준 라이브러리내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공한다.파이썬 프로그램을 작성할 때 없어서는 안 되는 필수적인 기능을 포함하고 있다.itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공한다.특히 순열과 조합 라이브러리는 코딩 테스트에서 자주 사용된다.heapq : 힙(Heap) 자료구조를 제공한다.일반적으로 우선순위 큐 기능을 구현하기 위해 사용된다.bisect : 이진 탐색(Binary Search) 기능을 제공한다.collections : 덱(deque), 카운터(Counter) 등의 유용한 자료구조를 포함한다.math : 필수적인 수학적 기능을 제공한다.팩토리얼, 제곱근, 최대공약수(GCD), 삼각함수 관련 ..
[이것이 코딩 테스트다 with 파이썬] | 코딩 테스트를 위한 파이썬 문법 | 함수와 람다 표현식
·
Study/Python
함수함수(Function)란 특정한 작업을 하나의 단위로 묶어 놓은 것을 의미한다.함수를 사용하면 불필요한 소스코드의 반복을 줄일 수 있다.함수의 종류내장 함수 : 파이썬이 기본적으로 제공하는 함수사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수함수 정의하기프로그램에는 똑같은 코드가 반복적으로 사용되어야 할 때가 많다.함수를 사용하면 소스코드의 길이를 줄일 수 있다.매개변수 : 함수 내부에서 사용할 변수반환 값 : 함수에서 처리 된 결과를 반환def 함수명(매개변수): 실행할 소스코드 return 반환 값더하기 함수 예시더하기 함수 예시 1)def add(a, b): return a + bprint(add(3, 7)) # 10더하기 함수 예시 2)def add(a, b):..
[이것이 코딩 테스트다 with 파이썬] | 코딩 테스트를 위한 파이썬 문법 | 반복문
·
Study/Python
반복문특정한 소스코드를 반복적으로 실행하고자 할 때 사용하는 문법이다.파이썬에서는 while문과 for문이 있는데, 어떤 것을 사용해도 상관 없다.다만 코딩 테스트에서의 실제 사용 예시를 확인해보면, for문이 더 간결한 경우가 많다.반복문: while문1부터 9까지의 모든 정수의 합 구하기 예제 (while문)i = 1result = 0# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행while i 1부터 9까지 홀수의 합 구하기 예제 (while문)i = 1result = 0# i가 9보다 작거나 같을 때 아래 코드를 반복적으로 실행while i 반복문에서의 무한 루프무한 루프(Infinite Loop)란 끊임없이 반복되는 반복 구문을 의미한다.코딩 테스트에서 무한 루프를 구현할 일은 거의 ..
[이것이 코딩 테스트다 with 파이썬] | 코딩 테스트를 위한 파이썬 문법 | 조건문
·
Study/Python
조건문조건문은 프로그램의 흐름을 제어하는 문법이다.조건문을 이용해 조건에 따라서 프로그램의 로직을 설정할 수 있다.조건문 예제x = 15if x >= 10: print("x >= 10")if x >= 0: print("x >= 0")if x >= 30: print("x >= 30")# x >= 10# x >= 0들여쓰기파이썬에서는 코드의 블록(Block)을 들여쓰기(Indent)로 지정한다.블록 : 특정한 기능을 수행하기 위한 한 단위의 코드 묶음다음의 코드에서 2)번 라인은 무조건 실행된다.score = 85if score >= 70: print('성적이 70점 이상입니다.') if score >= 90: print('우수한 성적입니다.')else: prin..
[이것이 코딩 테스트다 with 파이썬] | 코딩 테스트를 위한 파이썬 문법 | 입출력
·
Study/Python
기본 입출력모든 프로그램은 적절한 (약속된) 입출력 양식을 가지고 있다.프로그램 동작의 첫 번째 단계는 데이터를 입력 받거나 생성하는 것이다.ex) 학생의 성적 데이터가 주어지고, 이를 내림차순으로 정렬한 결과를 출력하는 프로그램자주 사용되는 표준 입력 방법input() 함수는 한 줄의 문자열을 입력 받는 함수이다.map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용한다.ex) 공백을 기준으로 구분된 데이터를 입력받을 때는 다음과 같이 사용한다.list(map(int, input().split()))ex) 공백을 기준으로 구분된 데이터의 개수가 많지 않다면, 단순히 다음과 같이 사용한다.a, b, c = map(int, input().split())입력을 위한 전형적인 소스코드 1)..