본문 바로가기

ALGORITHM

(212)
백준 14889 스타트와 링크 (Java) 1. 문제 링크 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 팀을 N/2명으로 나누는 조합 과정을 거친다. 뽑힌 사람은 T1, 안 뽑힌 사람을 T2 배열로 나눠서 넣는다. 각 팀원끼리의 능력치를 전부 더하고, 차이가 최소가 되는 값을 출력한다. SWEA의 요리사 문제와 유사하다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Ar..
백준 2559 수열 (Java) 1. 문제 링크 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력받을 때 누적합을 배열에 넣었다. 주어진 값만큼 차이나게 값을 빼면서 그 중 최대가 되는 값을 출력했다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) th..
백준 4659 비밀번호 발음하기 (Java) 1. 문제 링크 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 각 조건을 확인하는 과정을 거치면 된다. 조건문이 여러개가 나와서 정신 딱 차리고 하나씩 하면 된다. 코드를 보면 문제 흐름 그대로 가는 게 보인다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOExceptio..
백준 15686 치킨 배달 (Java) 1. 문제 링크 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 치킨집 좌표를 list에 넣고 전체 치킨집 수에서 남을 M개의 치킨집을 조합한다. 조합할때마다 각 치킨집과 모든 집과의 거리(치킨거리)를 계산해서 최솟값을 합한다. 그 중 제일 작은 값을 출력한다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ..
백준 9372 상근이의 여행 (Java) 1. 문제 링크 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 N개국을 여행하는데 따로 거리나 연결된 나라가 있는 게 아니라 당황했다. 그냥 N개국을 가려면 N-1번 타야 한다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException..
백준 2789 유학 금지 (Java) 1. 문제 링크 2789번: 유학 금지 아주 멀리 떨어져 있는 작은 나라가 있다. 이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 하지만, www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 CAMBRIDGE에 들어가있는 문자를 모두 삭제해야 하기 때문에 replaceAll()을 사용했다. 4. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOExceptio..
백준 11650 좌표 정렬하기 (Java) 1. 문제 링크 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 좌표를 정렬하기 위해 클래스를 만들어서 x, y를 관리했다. 정렬을 위해 클래스에 Comparable 인터페이스를 구현한다. 그 중 compareTo()를 재정의해 x좌표 비교 후 y좌표를 비교하도록 했다. 이후에 Arrays.sort()를 이용해 배열을 재정의한 순으로 정렬한다. 4. 코드 import java.io.BufferedReader; impo..
백준 21608 상어 초등학교 (Java) 1. 문제 링크 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 학생에 대한 정보를 입력받으면서 자리를 찾는다. (이 자리가 정해져야 다음 자리를 정할 수 있기 때문) 모든 자리를 탐색하면서 인접칸에 좋아하는 학생의 수를 체크하고, 빈칸의 수를 체크한다. 1번 조건 확인 - 좋아하는 학생이 가장 많은 자리를 찾는다(list에 자리 추가) 2번 조건 확인 - 1번 조건이 1인 경우 자리 배치, 1보다 큰 경우 다음 조건을 확인한다. 4-1. 빈 칸이 가장 많은 ..