알고리즘/백준(BOJ)

알고리즘/백준(BOJ)

[백준/파이선] 24230번 트리 색칠하기

https://www.acmicpc.net/problem/24230 24230번: 트리 색칠하기 정점이 $N$개인 트리가 있다. 정점에는 1부터 $N$까지 번호가 붙어있다. 트리의 루트는 항상 1번 정점이며 맨 처음에는 모든 정점이 하얀색으로 칠해져 있는 상태이다. 하나의 정점에 색칠하면 해 www.acmicpc.net 문제가 조금 복잡하기 쓰여있지만, 하얀 색으로 칠할 수 없고 모든 입력이 칠할 수 있는 경우로만 주어지므로 그렇게 어렵게 생각하지 않아도 될 듯 하다. 기본적인 트리 탐색 알고리즘인 dfs와 bfs 중 하나 골라서 풀어도 되는데, 필자는 bfs로 골랐다. 핵심은 바로 부모와 나(자식)의 색깔 차이이다. 부모와 색이 다르다면 무조건 색을 한번 칠해야 하므로 그럴 때 마다 카운트를 해주면 된..

알고리즘/백준(BOJ)

[백준/파이썬] 1707번 이분 그래프

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 이분 그래프인지 아닌지를 판단하는 문제이다 정점 하나하나씩 bfs 탐색을 진행해주는데, 주의해야 할 점은 그룹을 지어야 한다는 것이다! (왜 bfs를 한번에 돌리지 않고, 정점 하나씩 해주냐면 입력이 어떻게 들어올 지 모르기 때문이다. 비연결 그래프가 존재하는 경우, 시작점과 연결되지 않은 곳은 탐색할 수 없기 때문에 모든 정점에 대해 탐색해주는 것이다) 트리를 하나 떠올려 보자. level 0 ..

알고리즘/백준(BOJ)

[백준/파이썬] 1967번 트리의 지름

https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 1167번 문제와 입력만 다르지 풀이법은 동일하다. https://oh2279.tistory.com/167

알고리즘/백준(BOJ)

[백준/파이썬] 1991번 트리 순회

https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 트리의 전위, 중위, 후위 순회를 코드로 구현하는 문제이다. c++로 코딩하던 버릇이 남아있어 그런지 아스키 코드를 이용했다 원랜 ans 변수에 답을 담는 것이 아닌, visited 배열을 이용해 답을 저장하려고 아스키 코드를 썻는데 결국 그러진 않았다. 굳이..? 라는 생각이 들어서,, 트리의 순회 방법에 대해 알고 있다면 차례대로 구현해주기만 하면 된다. 좀 더 정석적인 풀이 방법이..

알고리즘/백준(BOJ)

[백준/파이썬] 25307번 시루의 백화점 구경

https://www.acmicpc.net/problem/25307 25307번: 시루의 백화점 구경 첫째 줄에 백화점의 세로 길이, 가로 길이, 마네킹과 떨어져야 하는 거리를 의미하는 정수 $N, M, K$가 공백으로 구분되어 주어진다. ($1 \leq N,M \leq 2\,000$, $0 \leq K \leq 4\,000$) 둘째 줄부터 $N$개의 줄 www.acmicpc.net 상당히 까다롭게 풀었던 문제인데, 파이썬 후기가 없어서 글을 남긴다. 우선 시루의 위치에서 시작하여 bfs를 돌리며 매번 마네킹에 근접했는지 검사하는 방식으로 하려 했으나, 당연히 시간초과 및 자잘한 오류들이 많이 생겼다.. 해결하기 위해선, 마네킹들의 위치에서 bfs를 돌려 마네킹에 근접한 곳들을 따로 체크해둔다. 배열을 ..

알고리즘/백준(BOJ)

[백준/파이썬] 1167번 트리의 지름

https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 일단 이 문제는 입력도 은근 까다롭기 때문에 ㅋㅋ 입력부터 잘 받아보자. 무방향이지만 아래 코드처럼 입력받을 필요는 없다! 어차피 입력값에서 다 주어지기 때문이다. tree[a].append((b,c)) tree[b].append((a,c)) 그리고 이 문제는 '트리의 지름' 이란 키워드에 대한 이해가 필요하다. 단순히 임의의 한 노드에서 가장 멀리 있는 노드를 구하는 것이 아니라..

beomseok99
'알고리즘/백준(BOJ)' 카테고리의 글 목록 (3 Page)