Day 19. ์ฝ๋ฉ ๊ธฐ์ด ํธ๋ ์ด๋(Java)
1. ์ธ ๊ฐ์ ๊ตฌ๋ถ์
https://school.programmers.co.kr/learn/courses/30/lessons/181862
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
import java.util.List;
import java.util.ArrayList;
class Solution {
public String[] solution(String myStr) {
String[] answer = {};
String[] splitArr = myStr.replaceAll("a|b|c", " ").split(" ");
List<String> answerList = new ArrayList<>();
for(int i = 0; i < splitArr.length; i++) {
if(!splitArr[i].isEmpty()) {
answerList.add(splitArr[i]);
}
}
answer = answerList.stream().toArray(String[]::new);
answer = answer.length > 0 ? answer : new String[] {"EMPTY"};
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Arrays;
class Solution {
public String[] solution(String myStr) {
String[] answer = {};
answer = Arrays.stream(myStr.split("[abc]+")).filter(s -> !s.isEmpty()).toArray(String[]::new);
answer = answer.length > 0 ? answer : new String[] {"EMPTY"};
return answer;
}
}
2. ๋ฐฐ์ด์ ์์๋งํผ ์ถ๊ฐํ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181861
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i]; j++) {
answerList.add(arr[i]);
}
}
answer = answerList.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int[] answer = new int[Arrays.stream(arr).sum()];
int idx = 0;
for(int n : arr) {
for(int i = 0; i < n; i++) {
answer[idx++] = n;
}
}
return answer;
}
}
โผ ๋ฐฉ๋ฒ 3
import java.util.stream.Stream;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
String str = "";
for(int n : arr) {
str += (String.valueOf(n) + ",").repeat(n);
}
answer = Stream.of(str.split(",")).mapToInt(Integer::parseInt).toArray();
return answer;
}
}
3. ๋น ๋ฐฐ์ด์ ์ถ๊ฐ, ์ญ์ ํ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181860
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
int[] answer = {};
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
if(flag[i]) {
for(int j = 0; j < arr[i] * 2; j++) {
answerList.add(arr[i]);
}
} else {
for(int j = 0; j < arr[i]; j++) {
answerList.remove(answerList.size() - 1);
}
}
}
answer = answerList.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Stack;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
int[] answer = {};
Stack<Integer> answerStack = new Stack<>();
for(int i = 0; i < arr.length; i++) {
if(flag[i]) {
for(int j = 0; j < arr[i] * 2; j++) {
answerStack.push(arr[i]);
}
} else {
for(int j = 0; j < arr[i]; j++) {
answerStack.pop();
}
}
}
answer = answerStack.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
โผ ๋ฐฉ๋ฒ 3
import java.util.stream.Stream;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
int[] answer = {};
String answerStr = "";
for(int i = 0; i < arr.length; i++) {
if(flag[i]) {
answerStr += String.valueOf(arr[i]).repeat(arr[i] * 2);
} else {
answerStr = answerStr.substring(0, answerStr.length() - arr[i]);
}
}
answer = Stream.of(answerStr.split("")).mapToInt(Integer::parseInt).toArray();
return answer;
}
}
4. ๋ฐฐ์ด ๋ง๋ค๊ธฐ 6
https://school.programmers.co.kr/learn/courses/30/lessons/181859
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
if(answerList.size() == 0 || answerList.get(answerList.size() - 1) != arr[i]) {
answerList.add(arr[i]);
} else {
answerList.remove(answerList.size() - 1);
}
}
answer = answerList.size() == 0 ? new int[] {-1} : answerList.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.Stack;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
Stack<Integer> answerStack = new Stack<>();
for(int i = 0; i < arr.length; i++) {
if(answerStack.isEmpty() || answerStack.peek() != arr[i]) {
answerStack.push(arr[i]);
} else {
answerStack.pop();
}
}
answer = answerStack.isEmpty() ? new int[] {-1} : answerStack.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
push(Element item) : ๋ฐ์ดํฐ ์ถ๊ฐ
pop() : ์ต๊ทผ์ ์ถ๊ฐ๋(Top) ๋ฐ์ดํฐ ์ญ์
peek() : ์ต๊ทผ์ ์ถ๊ฐ๋(Top) ๋ฐ์ดํฐ ์กฐํ
5. ๋ฌด์์๋ก K๊ฐ์ ์ ๋ฝ๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/181858
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โผ ๋ฐฉ๋ฒ 1
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = {};
List<Integer> answerList = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
if(!answerList.contains(arr[i])) {
answerList.add(arr[i]);
}
if(answerList.size() == k) {
break;
}
}
while(answerList.size() < k) {
answerList.add(-1);
}
answer = answerList.stream().mapToInt(Integer::new).toArray();
return answer;
}
}
โผ ๋ฐฉ๋ฒ 2
import java.util.stream.IntStream;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = {};
arr = IntStream.of(arr).distinct().toArray();
answer = Arrays.copyOf(arr, k);
if(arr.length < k) {
Arrays.fill(answer, arr.length, k, -1);
}
return answer;
}
}
Arrays.fill(๋ฐฐ์ด ๋ณ์, ์ด๊ธฐํํ ๊ฐ) : ๋ฐฐ์ด ์ ์ฒด๋ฅผ ํน์ ๊ฐ์ผ๋ก ์ฑ์ธ ๋ ์ฌ์ฉํ๋ค.
Arrays.fill(๋ฐฐ์ด ๋ณ์, ์์, ๋+1, ์ด๊ธฐํํ ๊ฐ) : ๋ฐฐ์ด ์ ์ฒด๊ฐ ์๋๋ผ ๊ตฌ๊ฐ์ ์ง์ ํ์ฌ ํน์ ๊ฐ์ผ๋ก ์ฑ์ธ ๋ ์ฌ์ฉํ๋ค.
โผ ๋ฐฉ๋ฒ 3
import java.util.stream.IntStream;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = {};
answer = IntStream.concat(Arrays.stream(arr).distinct(), IntStream.range(0, k).map(i -> -1)).limit(k).toArray();
return answer;
}
}