JAVA/Coding Test 115

[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

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

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 접근 : - 내가 보유할 카드수 N 을 입력 받음 - N 장의 카드에 해당하는 숫자들을 받음 - 비교할 대상 의 숫자수 M 을 입력 받음 - M 개의 해당하는 숫자들을 받음 - 수 로만 이루어져 있으므로 이진 탐색 방법을 사용 - 이진 탐색을 사용하기 위해 N을 오름차순으로 정렬 - 입력 받은 M 을 한 개씩 꺼내어 N장의 카드들에 있는 수 인지 판별 코드 구현: i..

JAVA/Coding Test 2023.03.01

[JAVA] 백준 10870 피보나치 수 5_ 재귀함수

https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 접근 : - 피보나치 수를 재귀 함수로 구현 - n = 0 일 때, 결과 값은 0 - n = 1 일 때, 결과 값은 1 - n ≥ 2 일 때, Fn = Fn-1 + Fn-2 코드 구현: import java.io.*; public class Main { public static int fibonacci(int n) { // 0 이하가 들어오면 0 반환(예외처..

JAVA/Coding Test 2023.03.01

[JAVA] 백준 10872 팩토리얼_재귀함수

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 접근 : - N 을 받았을 때, 1이하 일 때에는 1을 결과로 출력 - 1 보다 큰 N 일 때, N을 곱하고 N이 1이 될 때까지 1 씩 감소 시키며 같은 과정을 반복 - 해당 과정을 재귀함수로 구현 main에서 factorial 메서드 호출시 다음과 같은 시퀀스가 일어남. (n = 5 일때, 예시) 코드 구현: public class Main { public static int factorial(int n, int result) { if (n

JAVA/Coding Test 2023.02.28