์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

Day 19. ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹(Java)

KASSIA 2024. 3. 1. 23:18

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;
    }
}