분류 전체보기
-
[파이썬/Python] 1676번 팩토리얼 0의 개수Algorithm/Baekjoon 2024. 4. 25. 17:05
문제https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.www.acmicpc.net 코드n = int(input())cnt = 0factor = 5# n 이하의 모든 5의 배수의 개수를 계산while n >= factor: cnt += n // factor factor *= 5print(cnt) 풀이이 문제는 파이썬으로 세 가지 방법으로 풀 수 있다. 1. factorial 직접 구현n = int(input())factorial = 1for i in range(2, n + 1): factorial *= i cnt = 0for s in reversed(..
-
[Algorithm] 너비 우선 탐색 / BFS(Breadth-First Search) 알고리즘Algorithm/Concepts 2024. 4. 25. 15:06
너비 우선 탐색 / BFS (Breadth-First Search) 알고리즘이란?그래프에서 모든 노드를 방문하는 알고리즘 중 하나이다.알고리즘의 기본 아이디어는 가까운 노드부터 먼 노드 순으로 그래프를 탐색하는 것이다. 시간복잡도BFS의 시간 복잡도는 그래프의 표현 방식에 따라 달라진다. 1. 인접 리스트 사용 시:각 노드에 대해 모든 인접한 노드를 방문해야 한다.각 노드는 한 번씩 방문하며, 각 노드의 모든 인접한 노드를 확인하는 데 걸리는 시간은 인접한 노드의 개수에 비례한다.따라서 시간 복잡도는 O(V + E) 이다. (* V = 정점의 수, E = 간선의 수){ 'A': ['B', 'C', 'D'], 'B': ['A'], 'C': ['A', 'D'], 'D': ['A', 'C', 'E..
-
[Algorithm] 깊이 우선 탐색 / DFS(Depth-First Search) 알고리즘Algorithm/Concepts 2024. 4. 25. 15:06
깊이 우선 탐색 / DFS (Depth-First Search) 알고리즘이란?그래프에서 모든 노드를 방문하는 알고리즘 중 하나이다.알고리즘의 기본 아이디어는 한 방향으로 갈 수 있는 한 최대한 깊게 그래프를 탐색하는 것이다. 시간복잡도DFS의 시간 복잡도는 그래프의 표현 방식에 따라 달라진다. 1. 인접 리스트 사용 시:각 노드에 대해 모든 인접한 노드를 방문해야 한다.각 노드는 한 번씩 방문하며, 각 노드의 모든 인접한 노드를 확인하는 데 걸리는 시간은 인접한 노드의 개수에 비례한다.따라서 시간 복잡도는 O(V + E) 이다. (* V = 정점의 수, E = 간선의 수){ 'A': ['B', 'C', 'D'], 'B': ['A'], 'C': ['A', 'D'], 'D': ['A', 'C',..
-
[Algorithm] 이진 탐색(Binary Search) 알고리즘Algorithm/Concepts 2024. 4. 24. 20:30
이진 탐색 / 이분 탐색 (Binary Search) 알고리즘이란?배열에서 특정한 값을 효율적으로 찾기 위한 알고리즘이다.알고리즘의 기본 아이디어는 탐색 범위를 반으로 줄여가면서 원하는 값을 찾는 것이다. 정렬된 상태의 배열에서만 사용할 수 있다. 시간복잡도O(log n) 이분 탐색의 기본 원리초기화:start (시작점)를 배열의 첫 번째 인덱스로, end (끝점)를 배열의 마지막 인덱스로 설정한다.반복 조건:start가 end보다 작거나 같은 동안 반복한다. (start가 end를 초과하면 찾고자 하는 값이 배열에 없다는 것을 의미)중간점 찾기:배열의 중간 지점 mid를 (start + end) / 2로 계산한다.탐색 로직:찾고자 하는 값 targe..
-
[파이썬/Python] 1654번 랜선 자르기Algorithm/Baekjoon 2024. 4. 24. 18:07
문제https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그www.acmicpc.net 코드import sysinput = sys.stdin.readlinek, n = map(int, input().split())cables = [int(input()) for _ in range(k)]# 이진 탐색을 위한 시작과 끝 지점 설정start, end = 1, max(cables)# 이진 탐색 실행while start..
-
[파이썬/Python] 1436번 영화감독 숌Algorithm/Baekjoon 2024. 4. 23. 17:33
문제https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워www.acmicpc.net 코드# 사용자로부터 찾고자 하는 '666'이 포함된 순서를 입력받음n = int(input())# 현재까지 발견된 '666'이 포함된 숫자의 개수를 세기 위한 카운터cnt = 0# 처음 검사할 숫자를 666으로 설정i = 666# 무한 반복문을 통해 '666'을 포함하는 숫자를 찾음while True: # 현재 숫자 i를 문자열로 변환하고 '666..
-
[Network] 계층 간 데이터 송수신 과정Computer Science/Network 2024. 4. 22. 17:58
클라이언트가 서버에 데이터를 요청하면 다음과 같은 과정이 일어난다. 1. 애플리케이션 계층에서 전송 계층으로 클라이언트가 보내는 요청 값들이 캡슐화 과정을 거쳐 전달된다. 2. 링크 계층을 통해 서버와 통신을 한다. 3. 서버의 링크 계층에서 애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송된다. 캡슐화 캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 데이터를 삽입하는 과정을 말한다. 1. 애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 '세그먼트' 또는 '데이터그램'화 되며 TCP(L4) 헤더가 붙여진다. 2. 인터넷 계층으로 가면서 IP(L3) 헤더가 붙여지며 '패킷'화 된다. 3. 링크 계층으로 가면서 프레임 헤더와 프레임 트레일러가 붙어 '..
-
[파이썬/Python] 1167번 트리의 지름Algorithm/Baekjoon 2024. 4. 19. 16:16
문제https://www.acmicpc.net/problem/1167 1167번: 트리의 지름트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지www.acmicpc.net 코드import sysinput = sys.stdin.readlinesys.setrecursionlimit(10001)def dfs(v, w): global distance, farthest_node visited[v] = True if distance 풀이1967번 트리의 지름과 같은 문제로, 입력 받는 부분만 다르다. https://ehdbs0903.tis..