문제 https://www.acmicpc.net/status?user_id=smc3843&problem_id=9466&from_mine=1 채점 현황 www.acmicpc.net 풀이 dfs를 이용해 방문한 학생이 아니면 다음 학생으로 이동한다. 이미 방문한 학생이면, 사이클이 형성되었다는 뜻이다. 하지만, 이미 사이클이 형성이 되어 조를 이루었다면, 이미 계산한 값이므로 조를 이루지 않는 경우에만 전체 학생수에서 사이클 수 만큼 반복하여 제거해준다. 결국 구하는 정답이 팀을 이루지 못한 학생이므로, 초기 ans 값을 학생 수로 설정하여 팀을 이룬 학생을 빼주면 된다. 코드 import java.io.BufferedReader import java.io.BufferedWriter import java.i..
[문제] https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 주의 : 코틀린으로 풀 때, 베이스를 배열에 저장해놓고 풀게 되면, 시간초과가 발생합니다. [풀이] - 문제 설명 문제를 이해를 잘못해서 한 번 삽질하고, 시간초과 때문에 두 번 고생한 문제이다. 간단하게 요약을 하면, 입력값 N은 이닝 수 이다. 이닝 수는 야구로 생각하면 1회초, 1회말의 그 1회를 의미한다. 입력으로 들어온 이닝 수 만큼 경기를 진행했을 때, 얻을 수 있는 최고점을 기록하..
[문제] https://www.acmicpc.net/problem/15591 15591번: MooTube (Silver) 농부 존은 1번 동영상과 2번 동영상이 USADO 3을 가지고, 2번 동영상과 3번 동영상이 USADO 2를 가지고, 2번 동영상과 4번 동영상이 USADO 4를 가진다고 했다. 이것에 기반해서 1번 동영상과 3번 동영상의 www.acmicpc.net [풀이] bfs를 이용하여 풀었다. visit 배열을 만들어, 방문하지 않았으며 최소 K값을 넘어가는 값만 탐색을 해주었다. [코드] import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.Output..
[문제] https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net [풀이] 불을 피해서 벽이 아닌 가장자리로 가는데, 가장 짧은 시간을 구하는 문제이다. 불은 상하좌우로 번지며, 탈출을 위한 이동도 상하좌우로만 이동할 수 있다. 너비 우선 탐색을 이용하여 풀었다. 입력받은 미로를 arr이라고 가정한다. bfs를 시간별로 반복하면서, 인자로 현재 위치와, 다음 번질 불의 위치를 넣는다. 그리고 다음 번질 불의 위치를 arr에 불로 최신화를 ..
[문제] https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net [풀이] 이 문제는 아래의 문제와 거의 같은 문제라고 볼 수 있다. https://shino72.tistory.com/entry/%EB%B0%B1%EC%A4%80-1967-kotlin 백준 [1967] kotlin [문제] https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,0..
[문제] https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net [풀이] 이 문제의 핵심은 다음과 같다. 바깥과 닿아있는 부분만 외부 공기이다. 치즈로 둘러쌓인 내부의 공기는 외부 공기가 아니다. 외부 공기와 최소 2면이 닿는 치즈는 한 시간 후에 녹는다. BFS 과정은 다음과 같다. 이동할 배열을 저장해두는 deque를 생성한다. 가장 먼저, 방문한 곳을 기록해두는 visit이라는 배열을 생성한다. 방문한 곳은 -1로 저장을 하고, 치즈..