๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

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

by ๊ทคํ”ผํ‚ค 2022. 12. 1.

 

โค๏ธ Problem

๋”๋ณด๊ธฐ
  • ๋ฌธ์ œ
    ๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ฐฐ์—ด arr์˜ ๊ฐ ์›์†Œ๋Š” ์ˆซ์ž 0๋ถ€ํ„ฐ 9๊นŒ์ง€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ณ  ์ „๋ถ€ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ œ๊ฑฐ๋œ ํ›„ ๋‚จ์€ ์ˆ˜๋“ค์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” ๋ฐฐ์—ด arr์˜ ์›์†Œ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด,
    • arr = [1, 1, 3, 3, 0, 1, 1] ์ด๋ฉด [1, 3, 0, 1] ์„ return ํ•ฉ๋‹ˆ๋‹ค.
    • arr = [4, 4, 4, 3, 3] ์ด๋ฉด [4, 3] ์„ return ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด arr์—์„œ ์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋Š” ์ œ๊ฑฐํ•˜๊ณ  ๋‚จ์€ ์ˆ˜๋“ค์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

  • ์ œํ•œ ์‚ฌํ•ญ
    • return ๊ฐ’์€ ์ด์ง„์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    • 1 ≤ bin1, bin2์˜ ๊ธธ์ด ≤ 10
    • bin1๊ณผ bin2๋Š” 0๊ณผ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
    • bin1๊ณผ bin2๋Š” "0"์„ ์ œ์™ธํ•˜๊ณ  0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no arr answer
1 [1,1,3,3,0,1,1] [1,3,0,1]
2 [4,4,4,3,3] [4,3]
  1. ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  2. ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 


 

๐Ÿ’› Solution

ํ’€์ด 1

import java.util.*;

public class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> trans = new Stack<>();
        trans.push(arr[0]);
        for(int i=1; i<arr.length; i++) {
            Integer tmp = arr[i];
            Integer compare = trans.peek();
            if(compare == tmp) {
                continue;
            } else {
                trans.push(tmp);
            }
        }

        int[] answer = new int[trans.size()];
        int index = answer.length-1;
        while (!trans.isEmpty()) {
            answer[index] = trans.pop();
            index--;
        }
        return answer;
    }
}

 

๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์„๊นŒ?



 

ํ’€์ด2

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        ArrayList<Integer> tmp = new ArrayList<Integer>();
        tmp.add(arr[0]);
        for(int i=1; i<arr.length; i++) {
            if(arr[i-1] != arr[i]){
                tmp.add(arr[i]);                
            }
        }       
        int[] answer = new int[tmp.size()];
        for(int i=0; i<answer.length; i++) {
            answer[i] = tmp.get(i).intValue();
        }
        return answer;
    }
}

 

ํšจ์œจ์„ฑ 2๋ฐฐ ์ฆ๊ฐ€!

 


 

๐Ÿ’œ Comment

์—ฐ์†์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๊ธฐ์œ„ํ•ด์„œ ๋จผ์ € ํ’€์ด 1์ฒ˜๋Ÿผ Stack์„ ์‚ฌ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” Stack์ด ํ›„์ž…์„ ์ถœ(Last In First Out)์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Stack์— ๋จผ์ € arr[0]์˜ ๊ฐ’์„ ๋„ฃ์€ ๋’ค ๋ฐ˜๋ณต๋ฌธ์„ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ arr[i]์˜ ๊ฐ’์ด Stack.peek()์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” push() ์—†์ด ๋„˜์–ด๊ฐ€๋„๋ก ๊ตฌํ˜„ํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ์ˆซ์ž๋ฅผ ๋„ฃ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋Ÿฐ ๋’ค Stack์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์„ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹ค ํ’€๊ณ  ๋‚˜๋‹ˆ Stack ์—†์ด๋„ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ArrayList๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ํšจ์œจ์„ฑ์ด 2๋ฐฐ ์ฆ๊ฐ€ํ–ˆ๋‹ค.

์•Œ๊ณ  ์žˆ๋Š” ์ง€์‹์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๊ผญ ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ธ์ง€๋ฅผ ๋จผ์ € ๊ณ ๋ คํ•ด์•ผ๊ฒ ๋‹ค.

 

 

10149์œ„๋‹ค

 

 

 

๋Œ“๊ธ€