diff --git a/Programmers/wonjunYou/P140108.java b/Programmers/wonjunYou/P140108.java new file mode 100644 index 0000000..9cfc6a8 --- /dev/null +++ b/Programmers/wonjunYou/P140108.java @@ -0,0 +1,44 @@ +package Programmers.wonjunYou; + +public class P140108 { + public int solution(String s) { + int[] counter = initCounter(); + char letter = s.charAt(0); + boolean doReset = false; + + int result = 1; + + for (int idx = 0; idx < s.length() - 1; idx++) { + if (doReset) { + counter = initCounter(); + letter = s.charAt(idx); + doReset = false; + } + + if (s.charAt(idx) == letter) { + counter[0] += 1; + } else { + counter[1] += 1; + } + + if (checkCounter(counter)) { + result += 1; + doReset = true; + } + } + + return result; + } + + private boolean checkCounter(int[] counter) { + if (counter[0] == counter[1]) { + return true; + } + + return false; + } + + private int[] initCounter() { + return new int[] {0, 0}; + } +} diff --git a/Programmers/wonjunYou/P148653.java b/Programmers/wonjunYou/P148653.java new file mode 100644 index 0000000..fdf8b13 --- /dev/null +++ b/Programmers/wonjunYou/P148653.java @@ -0,0 +1,28 @@ +package Programmers.wonjunYou; + +public class P148653 { + int answer = Integer.MAX_VALUE; + + public int solution(int storey) { + dfs(storey, 0); + + return answer; + } + + public void dfs(int storey, int count) { + if (count > answer) { + return; + } + + if (storey == 0) { + answer = count; + + } else { + int digit = storey % 10; + + dfs(Math.round(storey / 10), count + digit); + + dfs(Math.round(storey / 10) + 1, count + (10 - digit)); + } + } +} diff --git a/Programmers/wonjunYou/P150370.java b/Programmers/wonjunYou/P150370.java new file mode 100644 index 0000000..f9d370a --- /dev/null +++ b/Programmers/wonjunYou/P150370.java @@ -0,0 +1,47 @@ +package Programmers.wonjunYou; + +import java.util.*; + +class P150370 { + public int[] solution(String today, String[] terms, String[] privacies) { + List result = new ArrayList<>(); + + String[] todayInfo = today.split("\\."); + int year = Integer.parseInt(todayInfo[0]); + int month = Integer.parseInt(todayInfo[1]); + int day = Integer.parseInt(todayInfo[2]); + + Map termsInfo = parseTermsForMap(terms); + + for (int i = 0; i < privacies.length; i++) { + String privacy = privacies[i]; + + String startDate = privacy.split(" ")[0]; + int validDays = (termsInfo.get(privacy.split(" ")[1])) * 28; + + int elapsedDate = + ((year - Integer.parseInt(startDate.split("\\.")[0])) * 12 * 28) + + ((month - Integer.parseInt(startDate.split("\\.")[1])) * 28) + + ((day - Integer.parseInt(startDate.split("\\.")[2]))); + + if (elapsedDate >= validDays) { + result.add(i + 1); + } + } + + return result.stream() + .mapToInt(i -> i) + .toArray(); + } + + public Map parseTermsForMap(String[] terms) { + Map termsInfo = new HashMap(); + + for (String term : terms) { + String[] tmp = term.split(" "); + termsInfo.put(tmp[0], Integer.parseInt(tmp[1])); + } + + return termsInfo; + } +} diff --git a/Programmers/wonjunYou/P161990.java b/Programmers/wonjunYou/P161990.java new file mode 100644 index 0000000..5050162 --- /dev/null +++ b/Programmers/wonjunYou/P161990.java @@ -0,0 +1,20 @@ +package Programmers.wonjunYou; + +public class P161990 { + public int[] solution(String[] wallpaper) { + int[] answer = {51, 51, -1, -1}; + + for (int i = 0; i < wallpaper.length; i++) { + for (int j = 0; j < wallpaper[i].length(); j++) { + if (wallpaper[i].charAt(j) == '#') { + answer[0] = Math.min(i, answer[0]); + answer[1] = Math.min(j, answer[1]); + answer[2] = Math.max(i + 1, answer[2]); + answer[3] = Math.max(j + 1, answer[3]); + } + } + } + + return answer; + } +} diff --git a/Programmers/wonjunYou/P42576.java b/Programmers/wonjunYou/P42576.java index 31c5795..b83e5e9 100644 --- a/Programmers/wonjunYou/P42576.java +++ b/Programmers/wonjunYou/P42576.java @@ -1,4 +1,38 @@ package Programmers.wonjunYou; +import java.util.HashMap; +import java.util.Map; + public class P42576 { + public String solution(String[] participant, String[] completion) { + + Map counter = new HashMap<>(); + + for (String member : participant) { + if (counter.containsKey(member)) { + // map.get(key); + // map.put(key, value); + int count = counter.get(member); + counter.put(member, count + 1); + } else { + counter.put(member, 1); + } + } + + return findMemberGiveUp(counter, completion); + } + + private String findMemberGiveUp(Map counter, String[] completion) { + for (String member : completion) { + int count = counter.get(member); + counter.put(member, count - 1); + } + + for (Map.Entry entry : counter.entrySet()) { + if (entry.getValue() == 1) { + return entry.getKey(); + } + } + return ""; + } }