Skip to content

Commit 4da6140

Browse files
committed
feat : 2025-08-15,16,17,18 programmers lv.2 question solved.
1 parent 586b7d8 commit 4da6140

10 files changed

Lines changed: 338 additions & 0 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int[] arr) {
5+
int answer = -1;
6+
int cnt = 1;
7+
boolean isCorrect = true;
8+
while(true) {
9+
for(int elem : arr) {
10+
if (cnt % elem != 0){
11+
isCorrect = false;
12+
break;
13+
}
14+
}
15+
if(!isCorrect) {
16+
cnt++;
17+
}else {
18+
answer = cnt;
19+
break;
20+
}
21+
isCorrect = true;
22+
23+
}
24+
return answer;
25+
}
26+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
5+
private static int[][] dp;
6+
7+
int solution(int[][] land) {
8+
int answer = 0;
9+
10+
dp = land; // in-place 업데이트
11+
12+
for (int i = 0; i < land.length; i++) {
13+
for (int j = 0; j < land[i].length; j++) {
14+
int up = i - 1;
15+
16+
if (0 <= up) {
17+
int bestUp = 0;
18+
for (int k = 0; k < land[up].length; k++) {
19+
if (k == j) continue;
20+
bestUp = Math.max(bestUp, dp[up][k]);
21+
}
22+
dp[i][j] += bestUp;
23+
}
24+
}
25+
}
26+
27+
for (int i = 0; i < 4; i++) {
28+
answer = Math.max(answer, dp[dp.length-1][i]);
29+
}
30+
31+
return answer;
32+
}
33+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
private static int[] dp;
3+
// dp문제
4+
public long solution(int n) {
5+
long answer = 0;
6+
// 한 번에 1칸 또는 2칸 1 1 1 1 1 1
7+
//n : 6 => 13, n : 5 => 8, n : 4 => 5, n : 3 => 3, n : 2 => 2, n : 1 : 1
8+
9+
if (n <= 2) {
10+
return n;
11+
}
12+
13+
dp = new int[n+1];
14+
15+
dp[1] = 1;
16+
dp[2] = 2;
17+
18+
for(int i = 3; i < n+1; i++) {
19+
dp[i] = (dp[i-2] + dp[i-1]) % 1234567;
20+
}
21+
return dp[n];
22+
}
23+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int[] topping) {
5+
int answer = 0;
6+
Map<Integer, Integer> leftHashMap = new HashMap<>();
7+
Map<Integer, Integer> rightHashMap = new HashMap<>();
8+
9+
leftHashMap.put(topping[0], 1);
10+
11+
for(int i = 1; i < topping.length; i++){
12+
rightHashMap.put(topping[i], rightHashMap.getOrDefault(topping[i], 0) + 1);
13+
}
14+
15+
if(rightHashMap.size() == leftHashMap.size()){
16+
answer++;
17+
}
18+
19+
for(int i = 1; i < topping.length; i++){
20+
leftHashMap.put(topping[i], leftHashMap.getOrDefault(topping[i], 0) + 1);
21+
if(rightHashMap.get(topping[i]) == 1){
22+
rightHashMap.remove(topping[i]);
23+
}else {
24+
int value = rightHashMap.get(topping[i]);
25+
value--;
26+
rightHashMap.put(topping[i], value);
27+
}
28+
if(rightHashMap.size() == leftHashMap.size()){
29+
answer++;
30+
}
31+
}
32+
33+
34+
return answer;
35+
}
36+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public boolean solution(String[] phone_book) {
5+
Map<String, Integer> map = new HashMap<>();
6+
7+
boolean answer = true;
8+
9+
for(String book : phone_book){
10+
if(!map.containsKey(book)){
11+
map.put(book, 0);
12+
}else{
13+
int value = map.get(book);
14+
value++;
15+
map.put(book, value);
16+
}
17+
}
18+
19+
for(int i = 0; i < phone_book.length; i++){
20+
for(int j = 1; j < phone_book[i].length(); j++){
21+
if(map.containsKey(phone_book[i].substring(0, j))){
22+
return false;
23+
}
24+
}
25+
}
26+
return answer;
27+
}
28+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
private static Map<String, Integer> map;
5+
private static int[] slidingWindow;
6+
private static int answer;
7+
public int solution(String[] want, int[] number, String[] discount) {
8+
answer = 0;
9+
map = new HashMap<>();
10+
for(int i = 0; i < want.length; i++) {
11+
map.put(want[i], i);
12+
}
13+
14+
slidingWindow = firstScanDiscount(want, number, discount);
15+
16+
for(int i = 10; i < discount.length; i++){
17+
int curLeft = i-10;
18+
int nextRight = i;
19+
if(map.containsKey(discount[curLeft])){
20+
slidingWindow[map.get(discount[curLeft])]--;
21+
}
22+
if(map.containsKey(discount[nextRight])){
23+
slidingWindow[map.get(discount[nextRight])]++;
24+
}
25+
if(isValidArr(number, slidingWindow)){
26+
answer++;
27+
}
28+
}
29+
30+
return answer;
31+
}
32+
33+
private int[] firstScanDiscount(String[] want, int[] number, String[] discount) {
34+
int[] arr = new int[number.length];
35+
for(int i = 0; i < 10; i++) {
36+
for(int j = 0; j < want.length; j++){
37+
if(discount[i].equals(want[j])) {
38+
arr[j]++;
39+
}
40+
}
41+
}
42+
43+
if(isValidArr(number, arr)){
44+
answer++;
45+
}
46+
47+
return arr;
48+
}
49+
50+
private boolean isValidArr(int[] arr1, int[] arr2){
51+
boolean isValid = true;
52+
for(int i = 0; i < arr1.length; i++){
53+
if(arr1[i] > arr2[i]){
54+
isValid = false;
55+
break;
56+
}
57+
}
58+
return isValid;
59+
}
60+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(int[] scoville, int K) {
5+
PriorityQueue<Long> pq = new PriorityQueue<>();
6+
int answer = 0;
7+
boolean isFound = false;
8+
9+
for(int elem : scoville){
10+
pq.add((long)elem);
11+
}
12+
13+
if (!pq.isEmpty() && pq.peek() >= K) return 0;
14+
15+
while(!pq.isEmpty()) {
16+
17+
if(pq.size() > 1 && pq.peek() < K){
18+
long lowestScoville = pq.poll();
19+
long secondLowestScoville = pq.poll();
20+
long newestScoville = lowestScoville + secondLowestScoville * 2;
21+
pq.add(newestScoville);
22+
answer++;
23+
}else {
24+
break;
25+
}
26+
27+
if(pq.peek() >= K){
28+
isFound = true;
29+
break;
30+
}
31+
}
32+
if(isFound){
33+
return answer;
34+
}else {
35+
return -1;
36+
}
37+
38+
}
39+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import java.util.HashSet;
2+
import java.util.Set;
3+
4+
public class Solution {
5+
private static Set<Integer> set;
6+
private static boolean[] visited = new boolean[7];
7+
8+
public int solution(String numbers) {
9+
int answer = 0;
10+
set = new HashSet<>();
11+
12+
dfs(numbers, "", 0);
13+
14+
for (int num : set) {
15+
if (isPrime(num)) {
16+
answer++;
17+
}
18+
}
19+
return answer;
20+
}
21+
22+
private void dfs(String numbers, String str, int depth) {
23+
if (depth > numbers.length()) {
24+
return;
25+
}
26+
27+
for (int i = 0; i < numbers.length(); i++) {
28+
if(!visited[i]) {
29+
visited[i] = true;
30+
set.add(Integer.parseInt(str + numbers.charAt(i)));
31+
dfs(numbers ,str + numbers.charAt(i), depth + 1);
32+
visited[i] = false;
33+
}
34+
}
35+
}
36+
37+
private boolean isPrime(int prime) {
38+
if (prime < 2) {
39+
return false;
40+
}
41+
for (int i = 2; i <= (int) Math.sqrt(prime); i++) {
42+
if (prime % i == 0) {
43+
return false;
44+
}
45+
}
46+
return true;
47+
}
48+
}

2025-08-17/김호집/의상.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int solution(String[][] clothes) {
5+
Map<String, Integer> countByType = new HashMap<>();
6+
7+
for (String[] cloth : clothes) {
8+
String type = cloth[1];
9+
countByType.put(type, countByType.getOrDefault(type, 0) + 1);
10+
}
11+
12+
int ways = 1;
13+
for (int c : countByType.values()) {
14+
ways *= (c + 1); // 안 입음(1) 포함
15+
}
16+
return ways - 1; // 전부 안 입는 경우 제외
17+
}
18+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
private static int answer = 0;
3+
public int solution(int[] numbers, int target) {
4+
recursion(numbers, target, 0, 0);
5+
6+
return answer;
7+
}
8+
9+
public void recursion(int[] numbers, int target, int depth, int result) {
10+
if(depth == numbers.length){
11+
if(target == result){
12+
answer++;
13+
}
14+
return;
15+
}
16+
17+
18+
int plus = result + numbers[depth];
19+
int minus = result - numbers[depth];
20+
21+
recursion(numbers, target, depth+1, plus);
22+
recursion(numbers, target, depth+1, minus);
23+
24+
}
25+
26+
27+
}

0 commit comments

Comments
 (0)