https://www.acmicpc.net/problem/2725 2725번: 보이는 점의 개수 첫째 줄에 테스트 케이스의 개수 C(1
[Java] 백준 1449번 (수리공 항승)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 알고리즘 분류 그리디 정렬 풀이 그리디 알고리즘을 사용해 풀었다. 핵심 로직은 이러하다. 먼저 StringTokenizer로 물이 세는 곳을 저장한뒤, 새는 곳이 차례대로 있어야 최소한의 테이프를 쓰게 되니 정렬까지 진행했다. st = new StringTokenizer(br.readLine()); for (int i = 0; i < temp.length; i++) { temp[i..
[Java] 백준 1577 (도로의 개수)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1577 1577번: 도로의 개수 첫째 줄에 도로의 가로 크기 N과 세로 크기 M이 주어진다. N과 M은 100보다 작거나 같은 자연수이고, 둘째 줄에는 공사중인 도로의 개수 K가 주어진다. K는 0보다 크거나 같고, 50보다 작거나 같은 자 www.acmicpc.net 알고리즘 분류 다이나믹 프로그래밍(dp) 풀이 처음에 dfs로 문제를 풀어야 되나 싶었지만 범위를 보고 dp문제임을 깨달았다. 먼저 초기화 작업이다. 가짓수를 저장하는 2차원 배열 dp이다. int형으로는 표현하기 어렵기때문에 long형으로 선언했다. 그리고 세로로 공사중인 곳을 저장하기 위한 horizontal, 가로로 공사중인 곳을 저장하귀 위한 vertical 배열을 선언해줬..
[Java] 백준 1926 (그림) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1926 1926번: 그림어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로www.acmicpc.net알고리즘 분류너비우선 탐색깊이우선 탐색그래프 탐색 풀이그래프 탐색 문제이다. 저는 너비 우선 탐색(bfs)를 이용해 풀었다.먼저 초기화 작업이다. x 축 좌표로 이동할 int형 배열 dx,y 축 좌표로 이동할 int형 배열 dy,그림이 그려져 있는지 안그려져 있는지 (0과 1인지) 을 구분하는 2차원 배열 map,방문했는지 안했는지 구분하는 boolean형 2차원 배열 visited,그리고 너비 우선 탐색..
[Java] 백준 2822 (점수 계산)
·
BOJ, Programmers
https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 알고리즘 분류 정렬 풀이 먼저 Node라는 인덱스와 점수를 담은 내부 클래스를 생성하였다. public static class Node{ private int index; private int score; public Node(int index, int score) { this.index = index; this.score = score; } } 그리고 Node 클래스형 1차원 배열을 만든..
[Java] 백준 1500 (최대곱)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1500 1500번: 최대 곱 세준이는 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾으려고 한다. 만약 여러개일 경우 그 곱을 가능한 최대로 하려고 한다. 가능한 최대의 곱을 출력한다. 만약 S=10, K=3이면, 3,3,4는 www.acmicpc.net 수학 문제 알고리즘이다. 정수 S가 주어졌을 때 갯수가 K개이고 합이 S인 양의 정수를 구해야 한다. 중요 로직을 말하자면 먼저 1의 갯수가 적어야 곱이 최대로 크므로 중간값을 많이 구해야 한다고 생각했다. 중요 로직 코드를 설명하겠다. while (true){ if(s
[Java] 백준 1010번 (다리놓기)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net N구역에서 M구역으로 다리를 건설한다. (N
[Java] 백준 1012번 (유기농 배추)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 전형적인 bfs 문제이다. Queue를 사용해서 풀었다. 먼저 초기화 작업이다. 문제에 나와있듯이 각 케이스마다 m, n, k를 구해야 한다. StringTokenizer를 사용해 변수에 값을 넣었다. t = new StringTokenizer(br.readLine()); int m = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextT..
[Java] 백준 1049 (좋은 구간)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net 구간을 찾는 문제이다. 정수 집합 S가 있고, 주어진 숫자가 포함된 구간을 좋은 구간이라고 한다. A n) { if(numbers[i] < end) end = numbers[i]; }else if(numbers[i] < n) { if(start < numbers[i]) start = numbers[i]; } else if(numbers[i] == n){ // 만약 갖고 있다면 break; System.out.println("0"); System.exit(0); } } 아래는 전체 코드이다. import ja..