목록Data Structure & Algorithm/PS - JAVA (270)
Dev.baelanche
이차원배열을 세로로 탐색하면서 점수를 비교하였다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[][] = new int[n][3]; int score[] = new int[n]; for(int i=0; i
X 주변에 . 이 3개 이상이면 X 도 . 으로 치환이 된다. 지도 밖으로 나가도 바다로 취급하므로 인덱스 바깥도 . 으로 계산한다. 편의상 배열의 크기를 r+2, c+2 로 만들어서 외곽을 바다로 둘렀다. a = new char[r+2][c+2]; 배열을 . 으로 초기화 한 후 외곽을 제외하고 스캔 받았다. for(int i=1; i
입력 수열에서 위의 식을 역으로 돌려 원래 수열 A 를 구해야 한다. 수열 A 에서 인덱스 까지의 수열을 더한 후 인덱스 개수만큼 나누었으니 수열 B 에서 인덱스 개수만큼 곱하고 인덱스 까지의 수열을 빼면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int a[] = new int[n]; int p[] = new int[n]; for(int i=0; i
그래프에서 인접노드를 찾는 문제이다. 상근이의 친구의 친구까지 카운트 해야 하므로 노드 1번에 연결된 노드의 수와 그 노드에 연결된 노드의 수를 세면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int a[][] = new int[n+1][n+1]; boolean visited[] = new boolean[n+1]; ArrayList f = new ArrayList(); int cnt = 0; for(int i=0; i
문제 하단에 달려있는 위키 링크를 참조하여 풀었다. 유클리드 기하학 원 넓이는 흔히 알고있는 πr2 이고 택시 기하학 원 넓이는 마름모 모양으로, (2r)^2/2 이다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); DecimalFormat df = new DecimalFormat("0.000000"); int r = sc.nextInt(); double uclid = r*r*Math.PI; double taxi = (2*r)*(2*r)/2; System.out.println(df.format(uclid)); System.out.println(df.format(taxi)); s..
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int card[] = new int[n]; for(int i=0; i
메달 개수 정보를 담은 클래스 생성 > 금, 은, 동메달 수에 따른 정렬 > 등수 구함 순으로 풀었다. 코드가 쓸데없이 길지만 구현만 하면 되는 문제라 설계만 잘하면 술술 풀리는 문제이다. public class Main { static class Country { int rank; int num; int gold; int silver; int bronze; Country(int num, int gold, int silver, int bronze) { this.num = num; this.gold = gold; this.silver = silver; this.bronze = bronze; } } public static void main(String[] args) { Scanner sc = new Sca..
인접노드 탐색 문제이다. 높이 정보를 조건으로 주어야 한다는 것만 추가해서 풀면된다. 이처럼 높이 조건을 돌려보면서 컴포넌트 개수 중 최고 값을 찾으면 된다. visited 배열을 반복적으로 초기화하면서 DFS(높이 조건) 와 컴포넌트 세는 DFS 를 따로 수행했다. (참 지저분하다) public class Main { static int n; static int a[][]; static int temp[][]; static boolean visited[][]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); a = new int[n][n]; visited = new boolean[..