Algorithm/Baekjoon
-
[C++] 1629번 곱셈Algorithm/Baekjoon 2024. 10. 13. 13:22
문제https://www.acmicpc.net/problem/1629 코드#include using namespace std;// 거듭제곱을 분할정복 방식으로 계산하는 함수long long power(const long long& a, const long long& b, const long long& c) { if (b == 0) return 1; // b가 0이면 a^0 = 1이므로 1을 반환 // b를 절반으로 나누어 재귀적으로 계산 long long half = power(a, b / 2, c); half = (half * half) % c; // 모듈로 연산을 통해 계산된 값을 c로 나눈 나머지 // b가 홀수인 경우 a를 한 번 더 곱해주어야 함 if (b % 2 == 1) ha..
-
[Python][C++] 1504번 특정한 최단 경로Algorithm/Baekjoon 2024. 10. 9. 15:16
문제https://www.acmicpc.net/problem/1504 코드1. Pythonimport sysimport heapqinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# n: 노드(정점) 개수, e: 간선(도로) 개수n, e = map(int, input().split())# 그래프 초기화 (1번 노드부터 n번 노드까지 사용하므로 n+1 크기)graph = [[] for _ in range(n+1)]# e개의 간선 정보를 입력받아 양방향 그래프 생성for _ in range(e): a, b, c = map(int, input().split()) # a: 시작점, b: 도착점, c: 거리(가중치) graph[a]...
-
[Python][C++] 1238번 파티Algorithm/Baekjoon 2024. 10. 2. 16:31
문제https://www.acmicpc.net/problem/1238 코드1. Pythonimport sysimport heapqinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# n: 마을의 개수, m: 도로의 개수, x: 파티가 열리는 마을 번호n, m, x = map(int, input().split())# 그래프 초기화 (1번 마을부터 시작하므로 n+1 크기)graph = [[] for _ in range(n + 1)]# m개의 도로 입력 처리for _ in range(m): start, end, w = map(int, input().split()) # start: 출발 마을, end: 도착 마을, w: 도로의 거리 ..
-
[C++] 1167번 트리의 지름Algorithm/Baekjoon 2024. 9. 25. 13:38
문제https://www.acmicpc.net/problem/1167 코드#include #include #include using namespace std;// BFS 함수: 시작 노드 v에서 가장 먼 노드를 찾고, 그 거리와 함께 반환pair bfs(int v, int n, const vector>>& graph) { queue> q; // BFS 탐색을 위한 큐, (노드 번호, 거리) vector visited(n+1); // 방문 여부를 체크하는 배열 q.push(make_pair(v, 0)); // 시작 노드와 거리를 큐에 삽입 visited[v] = 1; // 시작 노드 방문 처리 int farthestV = v; // 가장 먼 노드를 저장할 변수 (..
-
[Python][C++] 1149번 RGB거리Algorithm/Baekjoon 2024. 9. 17. 11:38
문제https://www.acmicpc.net/problem/1149 코드1. Pythonimport sysinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# 집의 수 입력n = int(input())# 각 집을 칠하는 비용을 저장할 리스트 pp = []for _ in range(n): p.append(list(map(int, input().split()))) # 각 집을 칠하는 비용을 입력받아 리스트에 추가# 1번째 집부터 n번째 집까지 최소 비용을 누적 계산for i in range(1, n): # 현재 집을 빨간색으로 칠하는 최소 비용은 이전 집을 초록색 또는 파란색으로 칠한 비용 중 최소값에 현재 집을 빨간색으로 칠하는..
-
[Python][C++] 1043번 거짓말Algorithm/Baekjoon 2024. 9. 17. 11:28
문제https://www.acmicpc.net/problem/1043 코드1. Pythonimport sysinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# n: 사람 수, m: 파티 수n, m = map(int, input().split())# 진실을 알고 있는 사람들의 집합. 처음 입력은 첫 번째 숫자가 진실을 아는 사람 수이므로 [1:]로 슬라이싱하여 사람들의 번호만 가져옴knowing = set(input().split()[1:])# 각 파티에 참여하는 사람들의 정보를 저장하는 리스트 (각 파티는 집합으로 표현)parties = [set(input().split()[1:]) for _ in range(m)]# 모든 파티에 대해 진..
-
[C++] 30804번 과일 탕후루Algorithm/Baekjoon 2024. 9. 15. 22:42
문제https://www.acmicpc.net/problem/30804 코드1. C++#include #include #include using namespace std;int main() { int n; cin >> n; // 과일의 수 입력 vector fruits(n); // 과일의 종류를 저장할 벡터 // 과일 종류 입력 for (int i = 0; i > fruits[i]; } unordered_map cnt; // 과일의 종류별 개수를 저장할 맵 int left = 0, max_len = 0; // 슬라이딩 윈도우의 왼쪽 포인터와 최대 길이를 저장할 변수 // 슬라이딩 윈도우를 사용하여 최대 연속 부분 배열 찾기 for (in..
-
[Python][C++] 21736번 헌내기는 친구가 필요해Algorithm/Baekjoon 2024. 9. 15. 12:30
문제https://www.acmicpc.net/problem/21736 코드1. Pythonimport sysfrom collections import dequeinput = sys.stdin.readline # 빠른 입력을 위해 sys.stdin.readline 사용# BFS(너비 우선 탐색) 함수 정의def bfs(x, y): # 상하좌우 탐색을 위한 방향 벡터 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # 방문 여부를 기록하는 2차원 리스트 visited = [[0] * m for _ in range(n)] cnt = 0 # 만날 수 있는 사람의 수를 저장하는 변수 # BFS를 위한 큐 초기화 및 시작 위치 삽입 q = d..