JAVA 130

[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

[JAVA] 백준 1620 나는야 포켓몬 마스터 이다솜_집합과맵

https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 접근 : - 도감에 입력할 포켓몬의 갯수 N 을 입력 받는다. - 검증할 입력 갯수 M을 받는다. - 이름으로 조회하는 방법, 인덱스로 조회하는 방법 2가지를 구현하기 위해 각각 map으로 구현한다. ( 메모리는 낭비되지만 검색 속도는 향상) - 검증 문자열이 숫자로만 이루어진 경우, 인덱스로 조회하는 맵을 사용 - 검증 문자열이 영어 알파벳으로만 이루어진 경우, 이름..

JAVA/Coding Test 2023.03.03

[JAVA] 백준 14425 문자열 집합

https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 접근 : - 검색할 문자열의 갯수 n 을 입력 받음 - 검색 대상의 문자열 갯수 m 을 입력 받음 - n 개의 문자열을 먼저 집합 s 에 저장 - 이후 들어오는 m 개의 문자열에 대해서 집합 s 에 포함되어 있는지 확인 - 완벽하게 동일한 문자열이 있는 경우 갯수를 증가 시키므로 HashMap 을 사용해서 갯수를 카운트 한다. 코드 구현: import java.io..

JAVA/Coding Test 2023.03.02