본문 바로가기

Java53

[백준 Silver 3] 1748 수 이어 쓰기 1 - Java 문제링크 : https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 접근 과정 : 완전탐색으로 수를 N까지 탐색하면서, 그 자릿수를 모두 더해주었다. ++ N까지 모든 수를 탐색하지 않아도, 수의 범위로 자릿수의 총합을 구할 수 있다. 1~9 / 10~99 / 100~999 / .... 등 N과 각 자릿수의 범위 관계로 탐색연산의 횟수를 줄일 수 있다. 소스 코드 및 결과 : package BOJ; /** 수 이어 쓰기 1 완전탐색 */ import java.io.*; public class BOJ1748 { public static void main(String[] ar.. 2022. 1. 16.
[백준 Silver 2] 10451 순열 사이클 - Java 문제링크 : https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 접근 과정 : 분리 집합이 바로 떠올랐기 때문에, 분리집합으로 접근했다. 순열의 크기만큼 집합 배열을 선언한다. 순열의 인덱스가 해당 원소를 가리키기 때문에, 인덱스와 원소를 합친다(union). 모든 순열의 순회한 뒤에, 집합 배열의 값이 0인 원소를 카운트 한다. 소스 코드 및 결과 : package BOJ;.. 2022. 1. 14.
[백준 Silver 4] 11656 접미사 배열 - Java 문제링크 : https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 접근 과정 : 문자열 S를 어떻게 자를지 / 접미사들을 어떻게 정렬시켜서 출력할지 두 가지만 생각하면 된다. 문자열을 자르는 방식으로는 substring 메소드와 char를 하나씩 더해주는 방법이 있다. 접미사를 정렬하는 방식에는 우선순위 큐와 배열+Arrays.sort / List+Collections.sort 가 있다. 소스 코드 및 결과 : /* 접미사 배열 */ import java.io.*; import java.util.*; public class Ma.. 2022. 1. 13.
[백준 Gold 2] 1766 문제집 - Java 문제링크 : https://www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 접근 과정 : 결국 먼저 풀어야하는 문제가 없고, 문제 번호가 작은 것부터 출력하면 된다. 문제는 2가지 방법으로 접근했다. 1. 해당 문제를 기준으로, 먼저 풀어야 하는 문제와 나중에 풀어야 하는 문제를 저장하는 List 2개를 이용해서 접근 우선순위 큐에는 현재 풀 수 있는 문제를 집어넣어서, 문제 번호가 작은 것부터 풀었다. 문제를 풀 때, 해당 문.. 2022. 1. 13.