[BOJ/Topological Sort] 백준 2252 - 줄 세우기 (Java)
·
✏️/BOJ
2252 - 줄 세우기https://www.acmicpc.net/problem/2252문제N명의 학생 키 순서대로 줄 세움두 학생의 키를 비교하는 방법 사용 (모든 학생 다 비교 X 일부 O)=> 일부 학생들의 키 비교한 결과 주어졌을 때 줄 세우는 프로그램입력첫째 줄: N (1 다음 M개의 줄: 키를 비교한 두 학생의 번호 A, B (A가 B 앞에 서야 함)(학생들의 번호 1 ~ N번)출력: 학생들을 앞에서부터 줄을 세운 결과(답 여러 가지인 경우 아무거나 출력)풀이위상정렬(Topological Sort)방향이 있는 비순환 그래프(DAG; Directed Acyclic Graph)에서 모든 간선의 방향 지키며 정점 나열하는 것모든 정점의 진입차수(in-degree) 계산 -> 들어오는 간선 개수진입 차..
[BOJ/DFS+DP] 백준 2533 - 사회망 서비스(SNS) (Java)
·
✏️/BOJ
2533 - 사회망 서비스(SNS)https://www.acmicpc.net/problem/2533문제사회망에서 사람들의 친구 관계 그래프로 표현 (사이클 X) (사람 -> 정점 / 두 사람이 서로 친구 관계 -> 정점을 잇는 에지)-> 사회망 서비스에서 어떤 새로운 아이디어가 전파되는 과정 이해얼리 어답터(early adaptor): 어떤 새로운 아이디어를 먼저 받아들인 사람/ 얼리 어답터가 아닌 사람은 자신의 모든 친구들이 얼리 어답터일 때만 이 아이디어 받아들임=> 친구 관계 트리가 주어졌을 때 모든 개인이 새로운 아이디어를 수용하기 위해 필요한 최소 얼리 어답터 수?입력첫째 줄: 친구 관계 트리의 정점 개수 N (2 두 번째 줄 N - 1개의 줄: 각 줄마다 친구 관계 트리의 에지(u, v) 나타..
[BOJ/BFS] 백준 16954 - 움직이는 미로 탈출 (Java)
·
✏️/BOJ
16954 - 움직이는 미로 탈출https://www.acmicpc.net/problem/16954문제8x8 체스판에서 탈출하는 게임/ 모든 칸은 빈 칸 or 벽 중 하나시작: 가장 왼쪽 아랫 칸 / 도착: 가장 오른쪽 윗 칸1초마다 모든 벽이 아래에 있는 행으로 한 칸씩 내려가고 가장 아래에 있어서 행 X -> 벽 사라짐1초에 인접한 한 칸 or 대각선 방향으로 인접한 한 칸 이동 or 현재 위치 서 있을 수 있음 (빈칸으로만 이동)1초 동안 캐릭터 먼저 이동 -> 벽 이동/ 벽이 캐릭터 있는 칸으로 이동하면 캐릭터 이동 X=> 가장 오른쪽 윗 칸으로 이동할 수 있는지 없는지입력: 8개 줄에 걸쳐 체스판 상태 주어짐 ('.' 빈칸 / '#' 벽)/ 가장 왼쪽 아랫칸 항상 벽 X출력: 가장 오른쪽 윗 칸..
[BOJ/Union-Find] 백준 4195 - 친구 네트워크 (Java)
·
✏️/BOJ
4195 - 친구 네트워크https://www.acmicpc.net/problem/4195문제어떤 사이트의 친구 관계가 생긴 순서대로 주어졌을 때, 두 사람의 친구 네트워크에 몇 명이 있는지 구하는 프로그램(친구 네트워크: 친구 관계만으로 이동할 수 있는 사이)입력첫째 줄: 테스트 케이스 개수각 테스트 케이스 첫째 줄: 친구 관계 수 F (다음 F개의 줄: 친구 관계 생긴 순서(두 사용자 아이디 출력: 친구 관계 생길 때마다 두 사람의 친구 네트워크에 몇 명이 있는지 구하는 프로그램풀이Union-Find`unf[fb] = fa`: `fb`를 `fa` 밑으로 붙임 = `fa`가 대표`size[fa] += size[fb]`: 두 네트워크 크키 합침`Map HM = new HashMap()`: 이름, 고유번호..
[BOJ/Union-Find] 백준 1717 - 집합의 표현 (Java)
·
✏️/BOJ
1717 - 집합의 표현https://www.acmicpc.net/problem/1717문제초기에 n + 1개의 집합 {0}, {1}, {2}, ..., {n}합집합 연산과 두 원소가 같은 집합에 포함되어 있는지 확인하는 연산입력첫째 줄: n, m(: 입력으로 주어지는 연산의 개수)m개의 줄: 각각의 연산 (합집합: 0 a b = a가 포함되어 있는 집합과 b가 포함되어 있는 집합 합친다는 의미/ 1 a b: 두 원소가 같은 집합에 포함되어 있는지 확인)출력: 1로 시작하는 입력에 대해서 a와 b가 같은 집합 포함 O -> YES / X -> NO풀이Union-Find(Disjoint Set, 서로소 집합)여러 개의 원소가 있을 때 이 원소들이 어떤 그룹(집합)에 속하는지 관리하는 알고리즘시간 복잡도: ..
[BOJ/BFS] 백준 3197 - 백조의 호수 (Java)
·
✏️/BOJ
3197 - 백조의 호수https://www.acmicpc.net/problem/3197문제두 마리 백조 호수에 살고 있지만 호수를 덮고 있는 빙판으로 만나지 못함호수 행 R개, 열 C개인 직사각형 모양/ 어떤 칸 얼음으로 덮여있음호수 차례대로 녹는데 매일 물 공간과 접촉한 모든 빙판 공간 녹음-> 두 개 공간 접촉하려면 가로 or 세로 닿아 있는 것만(대각선 X) 생각백조는 물 공간에서 가로 or 세로(대각선 X) 이동 O=> 며칠 지나야 백조들이 만날 수 있는지입력첫째 줄: R, C (1 다음 R개 줄: 각각 길이 C의 문자열 주어짐('.' 물 공간 / 'X' 빙판 공간 / 'L' 백조가 있는 공간)출력: 주어진 걸리는 날풀이이중 BFS백조 이동(`moveSwan()`)백조 물(`.`) 위로만 이동얼..
kimmeoww
빙글빙글 돌아가는 Debug 하루