본문 바로가기

백준_JAVA46

[백준] 10830번 - 행렬 제곱 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 크기가 N*N 인 행렬 A를 B번 제곱한 결과를 출력하시오. 단, A^B의 각 원소를 1,000으로 나누어 출력한다. 조건 2 2023. 6. 17.
[백준] 1766번 - 문제집 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 문제 N개의 문제 중 a문제를 b문제보다 먼저 풀어야 하는 관계인 문제쌍 (a, b)가 M개 주어졌을 때, 문제를 풀어야 하는 순서를 출력하시오. 단, 가능한 쉬운 문제 먼저 풀어야 한다. 조건 1 2023. 6. 16.
[백준] 2609번 - 최대공약수와 최소공배수 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 이 문제는 이전에 직관적인 풀이로 해결한 적이 있었는데 최근 프로그래머스에서 최대 공약수와 최소 공배수를 이용하는 문제를 접했다가 처음보는 풀이법을 확인하고 다시 들여다 보게 되었다. 우선, 이전에 내가 풀이를 했던 방식은 단순히 최대 공약수와 최소 공배수를 찾을 때까지 인자를 하나씩 키우거나 줄이면서 해결하는 방법이었다. private void solution () { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); // 변수 b에.. 2023. 6. 15.
[백준] 2252번 - 줄 세우기 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 문제 N명의 학생 중 두 학생의 키를 M번 비교한 데이터가 주어질 때, 키 순서를 유추하여 줄을 세우시오. 답이 여러가지인 경우에는 아무거나 출력해도 무방함. 조건 1 2023. 6. 11.
[백준] 3584번 - 가장 가까운 공통 조상 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net LCA(Lowest Common Ancestor) 알고리즘을 사용하여 최소 공통 조상을 구하는 문제이다. 하나의 쌍에 대한 LCA를 구하면 되기 때문에 문제풀이 원리는 아래 LCA 설명 링크로 대신하고 전체 코드만 기록해두겠다. LCA 개념 및 구현 방법 [알고리즘] 최소 공통 초상(LCA) Lowest Common Ancestor 한국말로 직역하면 최소 공통 조상이다. 자료구조 트리에 사용하며, 트리 내 두 .. 2023. 6. 11.
[백준] 15663번 - N과 M (9) 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 N개의 자연수 중에서 M개를 고른 수열을 중복 없이 사전 순 기준 증가하는 순서로 출력하시오. 조건 1 2023. 6. 10.
[백준] 14002번 - 가장 긴 증가하는 부분 수열 4 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 이전에 풀이한 백준 11053번 가장 긴 증가하는 부분 수열 문제의 풀이에 가장 긴 증가하는 부분 수열의 인덱스를 저장해주는 개념을 적용하면 풀이할 수 있다. 만약 백준 11053번을 아직 해결하지 않았다면 먼저 해결하고 오는 것이 도움이 될 것이다. 백준 11053번 풀이 [백준] 11053번 - 가장 긴 증가하는 부분 수열 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주.. 2023. 6. 8.
[백준] 1613번 - 역사 1613번: 역사 첫째 줄에 첫 줄에 사건의 개수 n(400 이하의 자연수)과 알고 있는 사건의 전후 관계의 개수 k(50,000 이하의 자연수)가 주어진다. 다음 k줄에는 전후 관계를 알고 있는 두 사건의 번호가 주어진다. www.acmicpc.net 문제 전체 n개의 역사 속 사건에 대하여 세준이가 알고 있는 두 사건의 전후관계의 수가 k개일 때, s개의 사건 쌍에 대한 전후 관계를 판단하시오. 조건 1 2023. 6. 7.
[백준] 11404번 - 플로이드 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 문제 n개의 도시가 존재하고 도시 A에서 출발하여 도시 B에 도착하는 비용 c의 버스 정보가 M개 주어질 때, 모든 도시의 쌍 (A, B)에 대하여 도시 A에서 도시 B로 가는데 필요한 비용의 최솟값을 구하여라. 조건 시작 도시와 도착 도시가 같은 경우는 없다. 시작 도시와 도착 도시를 연결하는 노선은 하나가 아닐 수 있다. 도시 i에서 도시 j로 갈 수 없는 경우에는 0 출력 2 2023. 6. 7.