이번에 취업 스터디를 만들면서 모든 기업이 그렇듯이 코테 통과가 우선이고 여기서 수많은 사람들이 탈락하기에 중점을 알고리즘 문제 풀이 습관에 두었다.
또한, CS 및 이력서 점검도 사실 전에 스터디를 해보는 결과 한번 외우고 세팅이 되면 어렵지 않은 부분이라 초점을 알고리즘으로 두어 이코테에 나온 문제 유형 분포에 따라서 과제도 세팅을 하였다. 오늘의 주제는 구현으로 실버1, 골드4 단계별로 문제를 풀고 익숙해지기로 했다.
n = int(input())
calender = [0] * 366
for _ in range(n):
s, e = map(int, input().split())
for index in range(s, e+1):
calender[index] += 1
x_len = 0
y_len = 0
answer = 0
for i in range(366):
if calender[i] != 0:
x_len = max(x_len, calender[i])
y_len += 1
else:
answer += x_len * y_len
x_len = 0
y_len = 0
answer += x_len * y_len
print(answer)
문제를 풀었는데 계속 46%에서 틀렸다고 떠서 다른 사람들거를 보며 따라 치며 가져오게 되었다ㅠㅠ
import sys
sys.setrecursionlimit(10**7)
left = dict()
right = dict()
N = int(input())
parent = [0] * (N+1)
node_count = 0
for _ in range(N):
a, b, c = map(int, input().split())
left[a] = b
right[a] = c
if b != -1:
parent[b] = a
node_count += 1
if c != -1:
parent[c] = a
node_count += 1
# 마지막 노드 구하는 파트
last_node = 0
def traverse(node):
global last_node
if node == -1:
return
traverse(left[node])
last_node = node
traverse(right[node])
traverse(1)
edge_count = node_count * 2
movement = 0
# 마지막 노드까지 이동 경로의 거리 구함
while last_node != 1:
movement += 1
last_node = parent[last_node]
print(edge_count - movement)