알고리즘 (Algorithm), PS

알고리즘 (Algorithm), PS/Baekjoon Online Judge

[BOJ 2252] 줄 세우기(풀이, Python)

문제를 보았을때 대략 단계가 있는 그래프 형태를 생각했습니다. 각 학생들이 저런식으로 있고, 1번 레이어는 의존성이 없는 학생들, 2번 레이어는 최대 1번 레이어에 의존성을 가지는 학생들, n+1번 레이어는 커야 n번 레이어에 의존성을 가지는 학생들입니다. 저런식으로 분류가 가능하다면, 각 레이어들을 순서대로 출력하는 방식으로 문제를 해결할 수 있습니다. 다만 가장 간단한 방식으로 순서대로 구현해보기로 했습니다. 우선 학생수가 32000명이니, 32000^2 = 10억 정도로 가능성이 있다고 봤습니다. 브루트 포스 방식 student_left = student_count for i in range(student_count): if student_left == 0: break for student in s..

알고리즘 (Algorithm), PS/Baekjoon Online Judge

[BOJ 30049] 영업의 신(풀이, C++)

BOJ 30049 영업의 신 문제에 대한 글입니다. 문제 입력은 조금 복잡해 보일 수 있으나 1 ~ N+2번 줄에서 base 입력을 받고, N+3번 줄부터 매출 변경에 관한 입력을 받으며 입력을 받을 때마다 계산하여 답을 출력해 주는 문제입니다. 크게 어려운 부분은 없는 구조이나, 관건은 시간복잡도를 잘 맞추는 것입니다. 조건으로 인하여 구현에 번거로운 부분 없이 편하게 문제를 풀 수 있습니다. 초기 입력 부분은 인원 300명에 가게 10000명으로 많아야 300만 정도의 입력을 받지만, N+3번부터 들어가는 계산은 N = 1,000,000 이기에 마지막 부분의 시간복잡도를 잘 고려해서 문제를 풀어야 합니다. 저의 초기 코드는 아래와 같은 방식으로 작성했습니다. int time; cin >> time; ..

알고리즘 (Algorithm), PS/Baekjoon Online Judge

BOJ 2263 트리의 순회(풀이, C++)

2263번 트리의 순회 문제는 이진 트리의 순회에 관한 문제로, 이진 트리의 중위 순회(In-order traversal)와 후위 순회(Post-order traversal)를 받아 전위 순회(Pre-order traversal)를 출력하는 문제입니다. 풀이 이해를 돕기 위해 위의 이진 트리를 보겠습니다. 해당 트리의 순회 순서는 다음과 같습니다. 중위 순회: 8 -> 4 -> 2 -> 9 -> 5 -> 10 -> 1 -> 11 -> 6 -> 3 -> 12 -> 7 후위 순회: 8 -> 4 -> 9 -> 10 -> 5 -> 2 -> 11 -> 6 -> 12 -> 7 -> 3 -> 1 전위 순회: 1 -> 2 -> 4 -> 8 -> 5 -> 9 -> 10 -> 3 -> 6 -> 11 -> 7 -> 12 우..

알고리즘 (Algorithm), PS

이진 트리(Binary tree)의 순회 순서

이진 트리는 노드들이 최대 2개의 자식 노드를 가지는 트리를 말합니다. 이러한 이진 트리를 순회하는 방법에는 전위 순회, 중위 순회, 후위 순회가 있습니다. 전위 순회 (Pre-order traversal) : 루트 노드부터 시작하여, 루트를 방문하고 왼쪽 서브 트리를 순회하고, 오른쪽 서브 트리를 순회합니다. 순서는 루트 -> 왼쪽 -> 오른쪽입니다. (예시: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8) 중위 순회 (In-order traversal) : 왼쪽 서브 트리부터 시작하여, 왼쪽 서브 트리를 순회하고, 루트를 방문하고, 오른쪽 서브 트리를 순회합니다. 순서는 왼쪽 -> 루트 -> 오른쪽입니다. (예시: 3 -> 2 -> 5 -> 4 -> 6 -> 1 -> 8 -> 7)..

Muromi
'알고리즘 (Algorithm), PS' 카테고리의 글 목록