본문 바로가기

분류 전체보기

(82)
[JAVA] String의 hashCode, ==, equals hashCode() - 객체의 주소를 기준으로 객체를 식별할 수 있는 정수 코드 리턴 - String은 재정의 되어 내용 값을 기준으로 식별 값을 리턴 (참조 값이 같으면 같은 hashCode) public class StringTest { public static void main(String[] args) { String str1 = "Kitty"; String str2 = "Kitty"; String str3 = new String("Kitty"); String str4 = new String("Kitty"); System.out.println(str1.hashCode()); System.out.println(str2.hashCode()); System.out.println(str3.hashCode..
[JAVA]백준_19564_반복 문제 : https://www.acmicpc.net/problem/19564 19564번: 반복 muse가 입력하고자 하는 글 $S$가 주어진다. 이 글은 알파벳 소문자만으로 이루어져 있으며, 길이는 $L$이다. ($1 \le L \le 10^5$) www.acmicpc.net 문제 유형 : 문자열 풀이 방법 : 입력 문자열의 문자들이 증가하는 형식이 아니면 하나씩 카운트 소스 코드 package BOJ; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BOJ_19564_반복_Main { public static void main(String[] args) thro..
[JAVA]백준_18511_큰 수 구성하기 문제 : https://www.acmicpc.net/problem/18511 18511번: 큰 수 구성하기 첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각 www.acmicpc.net 문제 유형 : 브루트포스, 재귀 풀이 방식 : - 조건을 하나하나 따지면서 재귀로 풀어도 가능하지만 간단한 재귀로 푸는 방법을 다른 닝겐 소스를 참조해서 풀었음 Step 1. 먼저 입력 K 원소들을 정렬 Step 2. 재귀 함수로 0부터 시작하여 K의 원소들 중 큰 걸 넣어가면서 비교 now가 입력 값 N보다 크면 return, 작으면 비교 후 최대값 갱..
[JAVA]백준_2346_풍선터뜨리기 문제 : https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 첫째 줄에 자연수 N(1≤N≤1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 편의상 0은 적혀있지 않다고 가정하자. www.acmicpc.net 문제 유형 : 구현, 자료구조, 덱 풀이방식 : 문제 유형에는 자료구조, 덱이라 표기되었지만 while문으로 구현 소스코드 package BOJ; import java.io.*; import java.util.*; public class BOJ_2346_풍선터뜨리기_Main { public static void main(String[] args) throws NumberFormatException, IOExceptio..
[JAVA]플로이드-와샬(Floyd-Warshall) 알고리즘 플로이드-와샬? 모든 최단 경로를 구하는 방법, 음의 가중치 간선 가능 방법 Step 1. D[][] : 자기자신으로의 인접이 아니고 갈 수 없는 경로라면 INF Step 2. k 경 i 출 j 도 : 경유지와 도착지가 같거나 출발지와 도착지가 같다면 패스 Step 3. 출발지에서 도착지까지의 가중치의 합이 경유지를 들렸을 때값보다 클 경우 갱신 소스 코드 import java.util.Scanner; public class FloydTest { static final int INF = 9999999; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[][] D = ne..
[JAVA]백준_1719_택배 문제 : https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하�� www.acmicpc.net 문제 유형 : 다익스트라, 그래프 이론 풀이 방식 (1) 다익스트라는 한 정점에서 다른 모든 정점을 찾을 때 사용 => 최단 경로의 최근 노드를 저장하여 dfs로 제일먼저 가야할 노드를 찾음 (2) 플로이드 와샬은 모든 최단 경로를 구하는 방법에 사용됨 => 최근 노드를 저장. 양방향 그래프이므로 최근경로를 거꾸로 뒤집으면 처음 가야할 노드를 찾을 수있음 소스코드1 (다익스트라) package..
[JAVA]다음 순열(NextPermutation) NextPermutation ? - 첫 번째 단계로는 맨 뒤에서부터 탐색하며, 교환할 위치를 찾아야한다. - 뒤쪽부터 탐색하며, i보다 값이 작은 i-1 인덱스를 발견하는 순간이 교환할 위치 i-1이 된다. - 두 번째 단계로는 내가 찾은 i-1 인덱스의 배열 값과, 교환할 i-1보다 큰 위치 j를 찾는 것이다. - 이렇게 찾은 i-1자리와 j의 값을 교환한다. - 마지막으로는, 다음 순열의 사전순의 특징을 위해 i번째 인덱스부터 맨마지막 인덱스의 배열 값을 오름차순으로 바꿔주는 작업이 필요하다. 방법 Step 1. 뒷쪽부터 왼쪽으로 탐색하며 교환이 필요한 위치 찾기 찾은위치가 0이면 이미 내림차순된 순열이므로 다음순열은 없다. Step 2. i-1위치 : 교환이 필요한 위치, i-1위치값과 교환할 뒷쪽..
[JAVA]백준_10836_여왕벌 문제 : www.acmicpc.net/problem/10836 10282번: 해킹 문제 최흉최악의 해커 yum3이 네트워크 시설의 한 컴퓨터를 해킹했다! 이제 서로에 의존하는 컴퓨터들은 점차 하나둘 전염되기 시작한다. 어떤 컴퓨터 a가 다른 컴퓨터 b에 의존한다면, b가 감염�� www.acmicpc.net 문제 유형 : 시뮬레이션 풀이 방식 : 최적화를 해야 시간초과가 안나는 문제 => 입력받고 바로 map에 연산 소스 코드 package BOJ; import java.io.*; import java.util.*; public class BOJ_10836_여왕벌_Main { public static void main(String[] args) throws IOException { // 1. 입력 Buf..