Skip to content

Commit 03e4e9d

Browse files
committed
solve: 프로그래머스 문제 풀이 - 4일차
1 parent b347f30 commit 03e4e9d

3 files changed

Lines changed: 119 additions & 0 deletions
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
boolean isPrime(long num) {
5+
if (num < 2) return false;
6+
for (long i = 2; i * i <= num; i++) {
7+
if (num % i == 0) return false;
8+
}
9+
return true;
10+
}
11+
12+
public int solution(int n, int k) {
13+
String numInBaseK = Integer.toString(n, k); // k진수 변환
14+
15+
List<String> list = new ArrayList<>();
16+
StringBuilder sb = new StringBuilder();
17+
18+
for (char ch : numInBaseK.toCharArray()) {
19+
if (ch == '0') {
20+
if (sb.length() > 0) {
21+
String res = sb.toString();
22+
long value = Long.parseLong(res); // ← long으로 변환
23+
if (isPrime(value)) {
24+
list.add(res);
25+
}
26+
sb = new StringBuilder();
27+
}
28+
} else {
29+
sb.append(ch);
30+
}
31+
}
32+
33+
// 마지막 처리
34+
if (sb.length() > 0) {
35+
String res = sb.toString();
36+
long value = Long.parseLong(res);
37+
if (isPrime(value)) {
38+
list.add(res);
39+
}
40+
}
41+
42+
return list.size();
43+
}
44+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
String[] words = { "A", "E", "I", "O", "U" };
5+
int maxSize = words.length;
6+
List<String> dictionary = new ArrayList<>();
7+
8+
public int solution(String word) {
9+
backtrack("", 0);
10+
11+
int answer = dictionary.indexOf(word) + 1;
12+
return answer;
13+
}
14+
15+
public void backtrack(String curr, int depth) {
16+
if (depth > 0) {
17+
dictionary.add(curr);
18+
// System.out.println(curr);
19+
}
20+
21+
if (depth == maxSize) {
22+
return;
23+
}
24+
25+
for (String word: words) {
26+
backtrack(curr + word, depth + 1);
27+
}
28+
}
29+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
public int[] solution(String[] gems) {
5+
int[] answer = {};
6+
7+
Map<String, Integer> gemsMap = new HashMap<>();
8+
for (String gem: gems) {
9+
gemsMap.put(gem, gemsMap.getOrDefault(gem, 0) + 1);
10+
}
11+
12+
//System.out.println(gemsMap);
13+
int totalGemsCounts = gemsMap.size(); // 보석 종류
14+
15+
int[] min = {0, gems.length-1};
16+
int left = 0;
17+
int right = 0;
18+
Map<String, Integer> currMap = new HashMap<>();
19+
20+
for (right = 0; right < gems.length; right++) {
21+
String gem = gems[right];
22+
currMap.put(gem, currMap.getOrDefault(gem, 0) + 1);
23+
// System.out.println(currMap);
24+
25+
// 필요한 보석 종류가 됐으면 왼쪽 포인터 이동
26+
while (currMap.size() >= totalGemsCounts) {
27+
// System.out.println(right + " " + left);
28+
if (right - left < min[1] - min[0]) {
29+
min[1] = right; // 1-based
30+
min[0] = left;
31+
}
32+
33+
String removeGem = gems[left];
34+
currMap.put(removeGem, currMap.getOrDefault(removeGem, 0) - 1);
35+
if (currMap.get(removeGem) == 0) {
36+
currMap.remove(removeGem);
37+
}
38+
// System.out.println(currMap);
39+
left++;
40+
}
41+
42+
}
43+
44+
return new int[] { min[0] + 1, min[1] + 1};
45+
}
46+
}

0 commit comments

Comments
 (0)