JAVA/Coding Test 80

[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

[JAVA] 백준 7568 덩치_브루트포스

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 접근 : - 입력 받은 n 명의 사람들의 정보를 받는다. - 모든 정보를 받은 후, 1명씩 선정하여 나머지 사람들에 대해서 키와 몸무게가 큰 사람이 있는지 확인한다. - 최종 덩치 등수는 자신보다 키와 몸무게가 큰 사람들의 수 +1로 표현된다. 코드 구현: import java.io.*; public class Main { // 덩치로 표현된 사람 객체 정의 public static ..

JAVA/Coding Test 2023.02.28

[JAVA] 백준 1436 영화감독 숌_브루트포스

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 접근 : - 666 부터 요구하는 수 까지 (최대 2666799 : N이 10000인 경우기 때문에 계산해보기 전까지 예상할 수 없음) 666이 포함되는 경우를 순서대로 카운트 - 666 이전에는 6을 3개 포함할 수 있는 경우가 없음. - 카운트 수가 입력된 n 이 되면 해당하는 666이 포함된 정수를 반환 - 순서대로 값을 찾아야 하기 때문에 값을 증가 시키면서 해당하는 모든 경우의 수를 구..

JAVA/Coding Test 2023.02.28

[JAVA] 백준 1018 체스판 다시 칠하기_부르트포스

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 접근 : - 체스판이 칠해질 수 있는 경우의 수는 검은색(B)으로 시작하는 경우와 흰색(W)으로 시작하는 경우로 나눌 수 있다. - 또한 8X8의 크기를 가질 수 있고, N / M 이 각각 8 이상의 크기를 가질 수 있다. - 그러므로 8 X 8 의 크기로 나누어 이동하면서 각각의 경우의 최소의 다시 칠하는 경우의 수를 계산한다. - 0.0 을 기준으로 x, y를 각각 1씩 offset을 ..

JAVA/Coding Test 2023.02.27