JAVA/Coding Test 80

[JAVA] 백준 15651 N과 M (3)_백트래킹

https://www.acmicpc.net/problem/15651 15651번: N과 M (3)한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해www.acmicpc.net  접근 :   - 최대 크기 N 과 뽑아야 하는 갯수 M 을 입력 받는다.  - 1부터 N까지 중복해서 M 개를 뽑는다.  - DFS(Depth-First Search)로 구현해서 결과를 출력한다.    코드 구현 :   - 이너 클래스 사용import java.io.*;public class Main { static class Dfs { private StringBuilder result; p..

JAVA/Coding Test 2023.03.09

[JAVA] 백준 1004 어린 왕자_기하1

https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 접근 : - 테스트 케이스 갯수 T를 받는다. (코드에서는 n으로 구현) - 출발점과 도착점을 받는다. - 행성수 n을 입력 받는다. (코드에서는 planet_num 으로 구현) - 출발점과 도착점의 좌표가 행성의 원의 방정식에 포함 여부를 확인하여 진입/이탈 횟수를 계산한다. - 발생할 수 있는 경우의 수는 다음과 같다. 코드 구현 : import java.io.*; public ..

JAVA/Coding Test 2023.03.08

[JAVA] 백준 1002 터렛_기하1

https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 접근 : - 테스트 케이스 갯수 n 을 입력받는다. - 두 원의 원점의 좌표 와 반지름을 입력 받는다. - 두개의 원의 접점을 출력한다. - 두개의 원이 존재할 경우는 다음과 같다. 코드 구현 : import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new In..

JAVA/Coding Test 2023.03.07

[JAVA] 백준 2477 참외밭_기하1

https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 접근 : - 회전 하는 경우와 시작점이 무작위 임으로, 회전과 시작점을 사용하지 않는 방법을 사용해야한다. - 변 길이를 반시계 방향으로 순서대로 입력 받으므로 이를 활용한다. - 사각형의 넓이를 사용하면 회전 및 순서에 영향을 받지 않으므로 이 성질을 이용한다. - 반시계 방향으로 받은 변 2개씩 곱하여 넓이를 구하면 특정 형태의 넓이가 나타난다. - 이를 이용하여 넓이당 참외 수 와 특정 모..

JAVA/Coding Test 2023.03.06

[JAVA] 백준 3009 네 번째 점_기하1

https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 접근 : - 좌표 3개의 값을 받아 x 좌표 배열, y 좌표 배열로 입력한다. - 직사각형 이기 때문에 같은 값의 좌표가 2개 씩 쌍으로 존재해야 한다. - 입력 받은 좌표 중 쌍을 이루지 않는 1개의 값을 찾아서 나머지 1개 의 값의 좌표로 입력한다. - x 좌표값 기준으로 경우의 수를 나누어 보면 1, 1, 3, target_x 인 경우( 1번째 x 좌표값과 2번째 x 좌표의 값이 같은 경우 3번째 값이 target 값이 된다) 1, 3, 1 ,target_x 인 경우( 1..

JAVA/Coding Test 2023.03.06

[JAVA] 백준 1085 직사각형에서 탈출_기하1

https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 접근 : - 사각형 내부의 점 x, y 좌표를 입력받는다. - 사각형 끝 지점인 w, h 좌표를 입력받는다. - x , y , w - x, h - y 거리 중 가장 짧은 값을 결과로 출력한다. 코드 구현 : import java.io.*; import java.util.HashSet; public class Main { public static void main(String[]..

JAVA/Coding Test 2023.03.06

[JAVA] 백준 11478 서로 다른 부분 문자열의 개수_집합과맵

https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 접근 : - 문자열을 입력받는다. - 문자열을 1개씩 체크해서 중복여부를 확인한 후 중복되지 않으면 저장한다. - 문자열을 2개씩 체크해서 중복체크 후 저장한다. - 문자열을 3개, 4개 , ... , 문자열 길이만큼 반복 체크해서 저장된 결과를 출력한다. - 중복을 허용하지 않고 성능을 고려해야 함으로 HashSet을 사용하여 코드를 구현한다. - 중복 체크는 2중 for문을 사용하여 모든 경우의 수를 체크한다. 코드구현 : import java.io.*; imp..

JAVA/Coding Test 2023.03.05

[JAVA] 백준 1269 대칭 차집합_집합과맵

https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 접근 : - 집합 a, b 의 갯수를 입력받는다. - 집합 a 를 hashMap으로 저장하고 집합 b 는 split을 사용하여 문자열 배열 그대로 받는다. - 집합 b 의 원소를 한개씩 빼서 집합 a에 있는지 확인한다. - 집합 a, b의 갯수를 더하고 중복된 수에 2를 곱해서 뺀다. 코드 구현 : import java.io.*; import java.util.HashMap; public c..

JAVA/Coding Test 2023.03.05

[JAVA] 백준 1764 듣보잡_집합과맵

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 접근 : - N , M 을 입력받는다. - N 명에 해당하는 사람 수 만큼 Map에 저장한다. - 이 후 M 명의 사람을 받을 때, N 에 저장된 이름이면 List에 저장한다. - List 를 사전 순서대로 정렬 한 후, 인원수 및 이름 들을 출력한다. 코드 구현 : import java.io.*; import java.util.ArrayList; import java.util.Collectio..

JAVA/Coding Test 2023.03.04

[JAVA] 백준 10816 숫자 카드 2_집합과맵

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 접근 : - 기존에 작성한 숫자 카드 글에서 map을 사용한 방식을 응용한다. - map을 입력할 때, 중복 여부를 체크하고 중복 카운트를 value로 입력한다. - 조회시에는 map에 키가 있으면 value 값을 없으면 0을 출력 하도록 한다. https://kjwit.tistory.com/entry/JAVA-%EB%B0%B1%EC%A4%80-10815-%EC%..

JAVA/Coding Test 2023.03.03