2025/02 53

Adjeacency Matrix (인접 행렬)

✅ 인접 행렬 (Adjacency Matrix)인접 행렬의 특징그래프를 표현하는 방법 중 하나로, 2차원 리스트(배열)을 사용하여 노드 간의 연결 정보를 저장하는 방식입니다.노드 개수가 N개라면, N x N 크기의 행렬을 사용합니다.graph[i][j] = 1이면 i번 노드에서 j번 노드로 갈 수 있음을 의미합니다.무방향 그래프의 경우 graph[i][j] == graph[j][i]가 항상 성립합니다.✅ 장점:연결 여부를 빠르게 확인 가능 (O(1)) → 특정 노드 간의 연결을 빠르게 조회할 수 있습니다.구현이 직관적 → 2차원 배열을 사용하기 때문에 접근이 쉬움❌ 단점:메모리를 많이 사용 (O(N^2)) → 노드 수가 많아지면 메모리 낭비가 심함간선 개수가 적은 경우 비효율적 → 사용하지 않는 공간이 ..

Graph ( 그래프 )

✅Graph(그래프)그래프(Graph)는 노드(Node, 정점)와 간선(Edge, 연결선)으로 이루어진 자료구조입니다. 이는 현실 세계의 관계를 모델링하는 데 많이 사용됩니다. 예를 들어,SNS 친구 관계 → 사람(노드)들이 친구(간선)로 연결지하철 노선도 → 역(노드)들이 선(간선)으로 연결지도 네비게이션 → 도시(노드)들이 도로(간선)로 연결그래프는 탐색 알고리즘을 사용해 특정 노드를 찾거나, 최단 경로를 구할 수 있습니다. 대표적인 탐색 방법으로 DFS(깊이 우선 탐색)과 BFS(너비 우선 탐색)이 있습니다.1️⃣ 그래프의 기본 요소그래프는 두 가지 주요 요소로 구성됩니다.노드(Node, 정점): 데이터를 저장하는 기본 단위입니다.간선(Edge): 노드 간의 관계를 나타내는 연결선입니다.🔹 노드(..

10709. 기상캐스터

https://www.acmicpc.net/problem/10709 ✅ 반복할때 마다 카운트를 올리되 특정 조건을 만나면 초기화 해서 다시하는 구조입니다.# 행 개수(H)와 열 개수(W) 입력받기H, W = map(int, input().split())# 하늘 상태를 2차원 리스트로 저장arr = [list(input().strip()) for _ in range(H)]# 결과 배열을 -1로 초기화 (기본적으로 구름 없음)result = [[-1] * W for _ in range(H)]# 각 행을 순회하며 구름이 어디 있는지 찾기for y in range(H): time = -1 # 현재 구름이 도착하는 시간 (-1이면 아직 구름 없음) for x in range(W): # 구..

Baekjoon 2025.02.20

2346. 풍선터뜨리기

https://www.acmicpc.net/problem/2346✅ 문제를 잘 읽고 요구조건에 맞게 풀어야 합니다......      예시 입력과 출력은 어떤 방식으로 하든 잘 구현이 됩니다.. import syssys.stdin = open('input.txt')input = sys.stdin.readlinefrom collections import dequeN = int(input().strip())dq = deque(range(1,N+1))# 안에 들어있는 번호 ( N풍선이면 n-1 값이 들어가야함 ) 2번풍선 값은 1번 인덱스에 있는거임.num = list(map(int, input().split()))ans = []# 제일처음에는 1번 풍선을 터뜨리고 안에있는 번호로 이동해서 한다. (원형임)P..

Baekjoon 2025.02.19

11866. 요세푸스 문제 0

https://www.acmicpc.net/problem/11866 ✅ 원형 큐에 대해 이해해봅시다.import syssys.stdin = open('input.txt')input = sys.stdin.readlinefrom collections import deque# 원형 큐 문제N, K = map(int,input().split())queue = deque(range(1,N+1))ans = [] # queue 는 문자열 변환이나 출력할때 queue([]) 형태로 뜨므로 리스트로 저장while queue: # queue 에 남아있을 때까지 queue.rotate(-(K-1)) # K-1번 왼쪽으로 회전( K 번째 요소가 맨앞에 오도록) ans.append(queue.popleft()) # ..

Baekjoon 2025.02.19

2164. 카드 2

🚨시간초과가 나버려욧!import sysinput = sys.stdin.readlineN = int(input())arr = list(i for i in range(N,0,-1))while len(arr) > 1: arr.pop() arr.insert(0, arr.pop())print(arr[0]) 👌중간에 삽입 및 삭제가 많으므로 Dequeue 를 사용해야합니다.import sysinput = sys.stdin.readlinefrom collections import deque # 완전 기초 모듈N = int(input().strip())queue = deque(range(N,0,-1))while len(queue) > 1: queue.pop() queue.appendleft(..

Baekjoon 2025.02.19

1157. 단어 공부

https://www.acmicpc.net/problem/1157 # # 기본 세팅입니다.# import sys# sys.stdin = open('input.txt')# input = sys.stdin.readline# 문자열 입력값을 받는다. ( raw 데이터, 날것의 데이터를 먼저 받는다.)str_raw = input().strip() # 문자열 끝에 포함된 개행문자 없애줘야 해서 strip이 들어가야함.# 알파벳의 대소문자는 구분하지 않으므로 모두 대문자로 바꿔준다. ( 데이터 전처리 )string = str_raw.upper()# 알파벳을 카운트 할 수 있는 딕셔너리로 생성한다. ( 다른 방법도 있지만 딕셔너리 연습할겸 )alphabet = {}for char in string: ..

Baekjoon 2025.02.19