Skip to content

Commit e2c5bf6

Browse files
committed
solve: 프로그래머스 문제 풀이 - 8일차
1 parent 8d17365 commit e2c5bf6

3 files changed

Lines changed: 117 additions & 0 deletions
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+
Map<String, Integer> map = new HashMap<>();
5+
Map<String, String> parentMap = new HashMap<>();
6+
7+
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
8+
int size = enroll.length;
9+
int[] answer = new int[size];
10+
11+
for (int i=0; i<size; i++) {
12+
map.put(enroll[i], 0);
13+
parentMap.put(enroll[i], referral[i]);
14+
}
15+
16+
for (int i=0; i<seller.length; i++) {
17+
String man = seller[i];
18+
int profit = amount[i] * 100;
19+
dfs(man, profit);
20+
}
21+
22+
for (int i=0; i<size; i++) {
23+
String man = enroll[i];
24+
answer[i] = map.get(man);
25+
}
26+
// System.out.println(map);
27+
return answer;
28+
}
29+
public void dfs(String man, int profit) {
30+
if (man.equals("-") || profit == 0) {
31+
return;
32+
}
33+
int give = profit / 10;
34+
int keep = profit - give;
35+
map.put(man, map.get(man) + keep);
36+
37+
dfs(parentMap.get(man), give);
38+
}
39+
}
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+
public int solution(int bridge_length, int weight, int[] truck_weights) {
5+
int answer = 0;
6+
7+
Queue<Integer> bridge = new LinkedList<>();
8+
for (int i=0; i<bridge_length; i++) {
9+
bridge.offer(0);
10+
}
11+
12+
int time = 0;
13+
int currWeight = 0;
14+
int idx = 0;
15+
while (!bridge.isEmpty()) {
16+
time++;
17+
18+
currWeight -= bridge.poll();
19+
if (idx < truck_weights.length) {
20+
if (currWeight + truck_weights[idx] <= weight) {
21+
bridge.offer(truck_weights[idx]);
22+
currWeight += truck_weights[idx];
23+
idx++;
24+
}
25+
else {
26+
bridge.offer(0);
27+
}
28+
}
29+
}
30+
31+
return time;
32+
}
33+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import java.util.*;
2+
3+
class Solution {
4+
Set<Integer> set = new HashSet<>();
5+
6+
public boolean isPrime(int n) {
7+
if (n < 2) return false;
8+
if (n == 2) return true;
9+
if (n % 2 == 0) return false;
10+
11+
for (int i=3; i<=Math.sqrt(n); i++) {
12+
if (n % i == 0) return false;
13+
}
14+
return true;
15+
}
16+
17+
public int solution(String numbers) {
18+
boolean[] visited = new boolean[numbers.length()];
19+
dfs(numbers, "", visited);
20+
21+
int answer = 0;
22+
for (int num: set) {
23+
if (isPrime(num)) {
24+
answer++;
25+
}
26+
}
27+
// boolean isTrue = isPrime(2);
28+
// System.out.println(isTrue);
29+
return answer;
30+
}
31+
32+
public void dfs(String numbers, String curr, boolean[] visited) {
33+
if (!curr.equals("")) {
34+
set.add(Integer.parseInt(curr));
35+
}
36+
37+
for (int i=0; i<numbers.length(); i++) {
38+
if (!visited[i]) {
39+
visited[i] = true;
40+
dfs(numbers, curr + numbers.charAt(i), visited);
41+
visited[i] = false;
42+
}
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)