JAVA 95

[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

[JAVA] 백준 2798 블랙잭_브루트포스

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 접근 : - 입력 받은 N 개의 수 중 3개를 골라 합하여 target number(M)를 넘지 않는 가장 근접한 수를 출력 - N이 3으로 고정되어 있으므로 재귀 함수 대신 반복문으로 구현 - N개중 1개를 뽑았을 때, M과 같거나 큰 경우 제외(다음 수 로 넘어감) - N개중 2개를 뽑았을 때, M과 같거나 큰 경우 제외(다음 수 로 넘어감) - N개중 3개를 ..

JAVA/Coding Test 2023.02.28

[JAVA] 백준 2231 분해합_브루트포스

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 접근 : - 입력받은 n 보다 작은 수 중 특정수(i)와 특정수의 각자리수를 더한 값이 n 과 같은 수 찾기 - i 가 여러개 일 경우 작은 수 출력( 작은 순서부터 큰 순서대로 계산 후 최초 i 발견 시 결과값 출력) - ex> n = 256 인 경우 i = 245 (245+2+4+5 = 256) - 끝까지 계산 후 조건을 만족하는 i 가 없는 경우 0 출력 - i는..

JAVA/Coding Test 2023.02.28