Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JAVA] ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด

carsumin 2021. 11. 13. 16:50

https://programmers.co.kr/learn/courses/30/lessons/12906

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ™์€ ์ˆซ์ž๋Š” ์‹ซ์–ด

๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด arr์˜ ๊ฐ ์›์†Œ๋Š” ์ˆซ์ž 0๋ถ€ํ„ฐ 9๊นŒ์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ณ  ์ „๋ถ€ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ œ๊ฑฐ๋œ ํ›„ ๋‚จ์€

programmers.co.kr

 

 

 

๋ฌธ์ œ ์„ค๋ช…์ด ๊ธธ์ง€๋งŒ ๋ฐฐ์—ด์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

ArrayList๋ฅผ ์ด์šฉํ•ด์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ด์„œ ํ’€์—ˆ๋‹ค.

 

๋งจ ์ฒ˜์Œ์— ํ’€์—ˆ์„ ๋•Œ๋Š” num์ด๋ผ๋Š” ๋ณ€์ˆ˜์—†์ด if(!list.contains(arr[i])) ~ ์ด๋Ÿฐ์‹์œผ๋กœ ํ’€์—ˆ๋”๋‹ˆ ๊ณ„์† ํ‹€๋ ธ์—ˆ๋‹ค.

 

๋ฌธ์ œ์—์„œ ์›์†Œ์˜ ํฌ๊ธฐ๋Š” 0~9๊นŒ์ง€๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ๊นŒ ์ ˆ๋Œ€ ์›์†Œ๊ฐ€ ๋  ์ผ ์—†๋Š” 10์œผ๋กœ ๋ณ€์ˆ˜ num์„ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.

 

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        int num = 10;
        
        for(int i=0; i<arr.length; i++){
            if(num != arr[i]){
                list.add(arr[i]);
                num = arr[i];
            }           
        }
        
        //answer๋ฐฐ์—ด์— ๋‹ต ์ €์žฅ
        int[] answer = new int[list.size()];       
        for(int i=0; i<answer.length; i++){
            answer[i] = list.get(i);
        }

        return answer;
    }
}

 

 

  • 2024.10.13 Stack ์œผ๋กœ ๋‹ค์‹œ ํ’€์–ด๋ด„

1. Stack์„ ์ƒ์„ฑ

2. Stack์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๊ฐ’(peek())์ด ์ž…๋ ฅ๋ฐ›์€ ๋ฐฐ์—ด๊ฐ’๊ณผ ๋‹ค๋ฅด๋ฉด push -> ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ค‘๋ณต์—†์ด Stack์— ๊ฐ’์ด ์Œ“์ผ ๊ฒƒ

3. Stack ์‚ฌ์ด์ฆˆ์™€ ๊ฐ™์€ answer ๋ฆฌํ„ด ๋ฐฐ์—ด์„ ์ƒ์„ฑ

4. pop์€ Stack์˜ ๊ฐ€์žฅ ์œ„๋ถ€ํ„ฐ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๊ฑฐ๊พธ๋กœ ๋Œ๋ฆฌ๋ฉด์„œ answer ๋ฐฐ์—ด์— ๊ฐ’์„ ๋„ฃ์Œ

 

 

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Stack<Integer> stack = new Stack<>();
        
        for(int i=0; i<arr.length; i++){
            if(stack.isEmpty() || stack.peek()!=arr[i]) {                
                stack.push(arr[i]);
            }
        }
        //stack ์‚ฌ์ด์ฆˆ answer ๋ฐฐ์—ด ์ƒ์„ฑ
        int[] answer = new int[stack.size()];
        for(int i=stack.size()-1; i>=0; i--){
            answer[i] = stack.pop();
        }
        return answer;
    }
}