본문 바로가기

Algorithm64

[백준] 15439번-베라의 패션-Java [백준] 15439번-베라의 패션-Java ❓문제 상의 N벌과 하의 N벌이 있다. i번째 상의와 i번째 하의는 모두 같은 색상이며, N개의 색상은 모두 서로 다르다. 상,하의의 서로 다른 색상인 조합의 갯수를 출력하라. N의 범위 1 ≤ N ≤ 2017 🖊️풀이법 상의 {a,b,c,d,e} 와 하의 {a,b,c,d,e}가 있다고 가정해보자. 만약 상의 a를 고른다면 하의는 같은 색인 a를 제외하고 4가지를 선택할 수 있다. 만약 상의 b를 고른다면 하의는 같은 색인 b를 제외하고 4가지를 선택할 수 있다. 이와같은 방법을 반복하면, 하나의 상의에 4가지의 색의 하의를 선택할 수 있다. 이 방법을 수식으로 나타내면, N*(N-1)이라는 식으로 표현할 수 있다. 해당 수식을 N에 대입하여 출력한다. 정답 코.. 2023. 7. 9.
[백준] 13909번-창문 닫기-Java [백준] 13909번-창문 닫기-Java ❓문제 N개의 창문과 N명의 사람이 있을 때, N번째 사람은 N의 배수 번째 창문이 열려있으면 닫고, 닫혀있으면 연다. 해당 과정을 1부터 N번째 사람까지 반복한다. 예시 (N이 3인 경우) 3명의 사람과 3개의 창문이 존재한다. 1번째 사람은 1의 배수인 1,2,3번 창문을 연다. (1, 1, 1) 2번째 사람은 2의 배수인 2번 창문을 닫는다. (1, 0, 1) 3번째 사람은 3의 배수인 3번 창문을 닫는다. (1, 0, 0) 결과적으로 마지막에 열려 있는 창문의 개수는 1개이다. N의 범위 1 ≤ N ≤ 2,100,000,000 🖊️풀이법 해당 문제는 N의 수에 따라 결과 값을 패턴을 분석하면, 아주 가볍게 풀 수 있다. 우선 N의 범위부터 살펴보자. N의 .. 2023. 7. 9.
[백준] 17103번-골드바흐 파티션-Java [백준] 17103번-골드바흐 파티션-Java ❓문제 골드바흐의 추측 : 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 테스트 케이스의 개수 T와 각각의 케이스만큼의 N이 입력되었을 때 골드바흐 파티션의 개수를 구하라. 예시 : 4 -> 2+2로 1가지, 10-> 3+7, 5+5로 2가지 단, 3+7과 7+3의 케이스와 같이 두 소수의 순서만 다른 것은 같은 파티션으로 간주한다. T, N의 범위 1 ≤ T ≤ 100 2 ≤ N ≤ 1,000,000 🖊️풀이법 N의 범위가 최대 1,000,000까지만 소수를 찾으면 되기 때문에 크기가 1,000,001의 boolean타입의 배열을 만들어 푼다. 소수를 검증할 크기가 1,000,001인 boolean[] prime을 생성 해당 prime배열의 인덱스 .. 2023. 7. 9.
[백준] 1929번-소수 구하기-Java [백준] 1929번-소수 구하기-Java ❓문제 정수 M과 N을 입력받아 M~N사이의 소수를 모두 출력하라. M,N의 범위 1 ≤ M ≤ N ≤ 1,000,000 🖊️풀이법 입력 M과 N을 입력받아 필드에 선언한다. a가 소수인지 판별하는 메서드를 정의한다. N-M+1 번의 반복문을 반복하며 a가 소수인 경우, 출력한다. 정답 코드 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = .. 2023. 7. 9.
[백준] 4134번-다음 소수-Java [백준] 4134번-다음 소수-Java ❓문제 테스트케이스의 개수와 각각의 테스트의 정수 n을 입력받아 n보다 크거나 같은 소수 중 가장 작은 소수를 출력하라. 정수 n의 범위는 0 2023. 7. 9.
[백준] 10816번-숫자 카드 2-Java [백준] 10816번-숫자 카드 2-Java ❓문제 첫째줄에 정수 M이 주어진다. 둘째 줄에는 M개의 요소가 주어진다. 셋째 줄에는 정수 N이 주어진다. 넷째 줄에는 N개의 요소가 주어진다. N개의 요소가 M개의 요소에서 몇개를 가지고 있는지 출력한다. 🖊️풀이법 M크기의 Integer객체를 요소로 가지는 HashMap을 생성한다. M요소들을 HashMap의 Key값에 넣어주고, Value값을 1로 넣어준다. 만약 요소의 Key값이 존재한다면 해당 Value값은 +1 해준다. 모든 요소를 Map에 넣어준뒤 N크기의 int배열을 선언한다. N만큼 반복문을 순회하며, 배열에 N의 요소들을 map.get()메서들을 이용해 Value값을 조회한다. 조회한 Value값을 StringBuilder에 담은 후 출력한.. 2023. 7. 9.