Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6) # 재귀 깊이 제한 설정(10만)

# 1. 입력 처리
N, R, Q = map(int, input().split()) # 정점 수, 루트 번호, 쿼리 수
graph = [[] for _ in range(N + 1)] # 트리 그래프

# 2. 트리 정보 입력
for _ in range(N - 1):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)

# 3. 서브트리 크기 기록 배열
size = [0] * (N + 1)

# 4. DFS를 이용한 서브트리 크기 계산
def countSubtreeNodes(current):
size[current] = 1 # 자기 자신 포함
for node in graph[current]:
if size[node] == 0: # 아직 방문하지 않은 경우
countSubtreeNodes(node)
size[current] += size[node] # 자식 서브트리 크기 추가

# 5. 루트에서 시작해 서브트리 크기 계산
countSubtreeNodes(R)

# 6. 쿼리 처리
for _ in range(Q):
U = int(input())
print(size[U])
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6) # 재귀 깊이 설정 (10만)

# 1. 입력 받기
N = int(input()) # 마을 개수
people = [0] + list(map(int, input().split())) # 각 마을 주민 수 (인덱스 맞추기 위해 0 추가)

# 2. 마을 연결 (트리 구성)
town = [[] for _ in range(N + 1)]

for _ in range(N - 1):
u, v = map(int, input().split())
town[u].append(v)
town[v].append(u)

# 3. DP 테이블 초기화 및 방문 리스트
dp = [[0, 0] for _ in range(N + 1)] # dp[i][0]: 우수 마을 X, dp[i][1]: 우수 마을 O
visited = [False] * (N + 1)


# 4. DFS를 통한 서브트리 탐색 및 DP 계산
def dfs(current):
visited[current] = True # 현재 노드 방문 처리
dp[current][1] += people[current] # 현재 마을을 우수 마을로 선정한 경우 (자기 자신 포함)

for child in town[current]:
if not visited[child]:
dfs(child) # 자식 노드로 DFS 진행
dp[current][1] += dp[child][0] # 자식 노드가 우수 마을이 아닌 경우 주민 수 더하기
dp[current][0] += max(dp[child][0], dp[child][1]) # 자식 노드에서 우수 마을이거나 아닌 경우 중 최대값 선택


# 5. DFS 호출 (루트 노드 1부터 시작)
dfs(1)

# 6. 결과 출력
print(max(dp[1][0], dp[1][1]))
21 changes: 21 additions & 0 deletions minjeong/Simulation/2025-01-02-[백준]-#2563-색종이.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import sys
input = sys.stdin.readline

n = int(input()) # 색종이의 수
paper = [[0] * 100 for _ in range(100)] # 100x100 도화지 초기화

# 색종이를 하나씩 붙이기
for _ in range(n):
x, y = map(int, input().split())

# 10x10 크기의 영역을 1로 채운다.
for i in range(x, x + 10):
for j in range(y, y + 10):
paper[i][j] = 1

# 도화지에서 1의 개수를 모두 더하여 넓이 계산
answer = 0
for row in paper:
answer += sum(row)

print(answer)
28 changes: 28 additions & 0 deletions minjeong/Simulation/2025-01-03-[백준]-#25206-너의평점은.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import sys
input = sys.stdin.readline

# 1. 과목 평점 테이블 (딕셔너리 사용)
rating = {
"A+": 4.5, "A0": 4.0,
"B+": 3.5, "B0": 3.0,
"C+": 2.5, "C0": 2.0,
"D+": 1.5, "D0": 1.0,
"F": 0.0
}

# 2. 변수 초기화
total_score = 0 # 총 평점 (학점 * 과목 평점의 합)
total_credit = 0 # 총 학점

# 3. 과목별 입력 및 평점 계산
for _ in range(20):
subject, credit, grade = input().split()
credit = float(credit) # 학점은 소수점으로 변환

if grade != 'P': # P 등급 과목 제외
total_score += credit * rating[grade]
total_credit += credit

# 4. 전공 평점 계산 및 출력
GPA = total_score / total_credit
print("{:.6f}".format(GPA)) # 소수점 6자리 출력
40 changes: 40 additions & 0 deletions minjeong/Simulation/2025-01-04-[백준]-#5430-AC.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import sys
from collections import deque

input = sys.stdin.readline


def AC():
p = input().strip() # 수행할 함수
n = int(input()) # 배열 크기
nums = input().strip() # 배열 입력

# 배열 처리
if nums == "[]":
nums = deque()
else:
nums = deque(map(int, nums[1:-1].split(",")))

reverse = False # 뒤집기 플래그
for command in p:
if command == "R":
reverse = not reverse # R이 나올 때마다 뒤집기 상태 토글
elif command == "D":
if not nums: # 비어있는 경우 에러 출력
print("error")
return
if reverse: # 뒤집힌 상태라면 뒤에서 제거
nums.pop()
else: # 그렇지 않다면 앞에서 제거
nums.popleft()

# 최종 출력
if reverse:
nums.reverse() # 필요시 뒤집기
print("[" + ",".join(map(str, nums)) + "]")


# 테스트 케이스 처리
T = int(input()) # 테스트 케이스 수
for _ in range(T):
AC()