알고리즘(356)
-
이코테 2021, BFS 개념 정리 (파이썬)
BFS - 너비 우선 탐색이라고도 부르며, 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. - 큐 자료구조를 사용한다. BFS의 동작과정 0. 그래프를 준비한다. (해당 강의에서는 번호가 낮은 인접 노드 순으로 방문하는 기준을 세움) 1. 탐색 시작 노드를 큐에 삽입하고 방문처리한다. 2. 큐에서 노드를 꺼낸 뒤 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리한다. 3. 더이상 2번의 과정을 수행할 수 없을 때까지 반복한다. 코드 - 위의 그래프를 다음과 같이 코드로 작성할 수 있다. from collections import deque # 2차원 리스트 graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4],..
2021.06.05 -
이코테 2021, DFS 개념 정리 (파이썬)
DFS - 깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. - 스택 자료구조(혹은 재귀 함수)를 이용한다. DFS의 동작과정 0. 그래프를 준비한다. (해당 강의에서는 번호가 낮은 인접 노드 순으로 방문하는 기준을 세움) 1. 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다. 2. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리함. 방문하지 않은 인접 노드가 없드면 스택에서 최상단 노드를 꺼낸다. 3. 더이상 2번의 과정을 수행할 수 없을 때까지 반복한다. 코드 - 위의 그래프를 다음과 같이 코드로 작성할 수 있다. graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3..
2021.06.04 -
이코테 2021, 구현/ 왕실의 나이트(파이썬)
유튜브 참고 : https://www.youtube.com/watch?v=2zjoKjt97vQ 문제 정의 행복 왕국의 왕실 정원은 체스판과 같은 8 x 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에서 나이트가 서있다. 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다. 나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있다.1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 이처럼 8 x 8 좌표 평면 상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열..
2021.06.04 -
이코테 2021, 구현/ 시각(파이썬)
유튜브 참고 : https://www.youtube.com/watch?v=2zjoKjt97vQ 문제 정의 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어있으므로 세어야하는 시각이다. - 00시 00분 03초 - 00시 13분 30초 반면 다음은 3이 하나도 포함되어있지 않으므로 세면 안되는 시각이다. - 00시 02분 55초 - 01시 27분 45초 입력 첫째 줄에 정수 N이 주어진다.(1 ≤ N ≤ 23) 출력 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다. 예제 ..
2021.06.04 -
백준 온라인 저널, 구현/2747번 : 피보나치 수(파이썬)
문제 정의 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 코드 n = int(input()) # n = 10 FS = [0, 1] if n >= 2: fo..
2021.06.03 -
백준 온라인 저널, 구현/10872번 : 팩토리얼(파이썬)
문제 정의 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다. 출력 첫째 줄에 N!을 출력한다. 코드 n = int(input()) def factorial(n): if n
2021.06.03