smooth waters run deep

전체 글 122

11650_좌표 정렬하기 (JAVA)

11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static class XY implements Comparable{ int x; int y; public XY(int x, int y){ this.x=x;..

1d-1c/BOJ 2020.12.04

Comparable interface (객체 정렬)

Comparable 이란? - java.lang.Comparable 패키지에 속해 있으며, Comparable 인터페이스를 이용해 객체를 정렬할 수 있다. 구현 방법 1. 객체에 Comparable 인터페이스를 implements 한다. 2. compareTo() 메서드를 오버라이드 한다. 현재 객체 = this.x, 파라미터로 들어온 객체 = XY.x 라고 가정하면 - this.x > XY.x : 양수 리턴 -> 오름차순 정렬 (현재 위치(자리) 유지) - this.x == XY.x : 0 리턴 -> 오름차순 정렬 (현재 위치(자리) 유지) - this.x 내림차순 정렬 (두 객체 위치(자리) 변경) 코드 구현 class XY implements Comparable { ..

공부내용/JAVA 2020.12.04

1427_소트인사이드 (JAVA)

1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder()..

1d-1c/BOJ 2020.12.04

1707_이분 그래프 (JAVA)

1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static int n; static int m; static ArrayList[] graph; static int[] color; static boolean flag = false; pub..

1d-1c/BOJ 2020.12.03

그래프 - 인접행렬/인접리스트

그래프 표현 - ① 인접행렬 - 정점 두 개의 관계가 v1->v2, v1-v2 와 같이 연결되어 있는 경우(인접해있는 경우) 간선의 가중치를 배열로 표현한다. - 장점 : 구현이 용이하고, v1->v2 의 가중치와 연결 여부를 한 번에 탐색할 수 있다. (v1->v2의 가중치==arr[v1][v2]이므로) - 단점 : 임의의 정점에 연결된 정점을 알기 위해서 정점의 개수만큼 탐색해야 하고, 인접관계를 저장하기 위한 배열의 크기가 nXn 만큼 필요하다. -> 간선 개수가 적을 경우 비효율 코드 구현 - ① 인접행렬 /* 입력 예시: 5 6 (정점 개수, 간선 개수) 0 1 (정점0 - 정점1 인접) 0 2 0 4 1 3 2 3 2 4 */ public static void main(String[] args..

14888_연산자 끼워넣기 (JAVA)

14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net ① 순열 이용 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { static List calList = new ArrayList(); static int[] ..

1d-1c/BOJ 2020.11.29

외판원 순회 문제 (TSP) (BOJ_2098)

외판원 순회 문제 (Traveling Salesperson Problem) 이란? - 임의의 정점에서 출발해 모든 정점을 모두 거쳐 다시 원래의 정점으로 돌아오는 순회 경로 중 최소 비용을 구하는 문제 - 한 번 거쳐간 길은 재방문이 불가하다. - 비트마스크 이용하는 대표 문제 코드 구현 (백준 2098번) import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int MAX = 16*1000000; // ① static int n; static int[][] map; static int[][..