📌Back-End/프로그래머스

Java 프로그래머스 코딩 기초 트레이닝 Day 19 문자열, 리스트(배열)

구 일 2024. 6. 15. 22:38
728x90
반응형

 

세 개의 구분자

프로그래머스 세 개의 구분자 자바

 

 

import java.util.LinkedList;

/**
 * 코딩 기초 트레이닝 Day 19
 * 세 개의 구분자
 */
public class Main1 {
    public static void main(String[] args) {
        String[] result = solution("baconlettucetomato");
        for (String s : result) {
            System.out.print(s + " ");
        }
        System.out.println();

        result = solution("abcd");
        for (String s : result) {
            System.out.print(s + " ");
        }
        System.out.println();

        result = solution("cabab");
        for (String s : result) {
            System.out.print(s + " ");
        }
        System.out.println();
    }

    public static String[] solution(String myStr) {
        LinkedList<String> list = new LinkedList<>();
        String[] result = myStr.split("[abc]");

        for (int i = 0; i < result.length; i++) {
            if (!result[i].isBlank()) {
                list.add(result[i]);
            }
        }

        if (result.length == 0) {
            return new String[]{"EMPTY"};
        } else {
            return list.stream().toArray(String[]::new);
        }
    }
}

 

 

배열의 원소만큼 추가하기

프로그래머스 배열의 원소만큼 추가하기 자바

 

 

import java.util.LinkedList;

/**
 * 코딩 기초 트레이닝 Day 19
 * 배열의 원소만큼 추가하기
 */
public class Main2 {
    public static void main(String[] args) {
        int[] result = solution(new int[]{5, 1, 4});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new int[]{6, 6});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new int[]{1});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    public static int[] solution(int[] arr) {
        LinkedList<Integer> list = new LinkedList<>();

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i]; j++) {
                list.add(arr[i]);
            }
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

 

빈 배열에 추가, 삭제하기

프로그래머스 빈 배열에 추가, 삭제하기 자바

 

 

import java.util.LinkedList;

/**
 * 코딩 기초 트레이닝 Day 19
 * 빈 배열에 추가, 삭제하기
 */
public class Main3 {
    public static void main(String[] args) {
        int[] result = solution(new int[]{3, 2, 4, 1, 3}, new boolean[]{true, false, true, false, false});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    public static int[] solution(int[] arr, boolean[] flag) {
        LinkedList<Integer> list = new LinkedList<>();

        for (int i = 0; i < flag.length; i++) {
            if (flag[i]) {
                for (int j = 0; j < arr[i] * 2; j++) {
                    list.add(arr[i]);
                }
            } else {
                for (int j = 0; j < arr[i]; j++) {
                    list.removeLast();
                }
            }
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

 

배열 만들기 6

프로그래머스 배열 만들기 6 자바

 

 

import java.util.Stack;

/**
 * 코딩 기초 트레이닝 Day 19
 * 배열 만들기 6
 */
public class Main4 {
    public static void main(String[] args) {
        int[] result = solution(new int[]{0, 1, 1, 1, 0});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new int[]{0, 1, 0, 1, 0});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new int[]{0, 1, 1, 0});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    public static int[] solution(int[] arr) {
        Stack<Integer> stk = new Stack<>();

        for (int i = 0; i < arr.length; i++) {
            if (stk.isEmpty() || stk.peek() != arr[i]) {
                stk.push(arr[i]);
            } else if (stk.peek() == arr[i]) {
                stk.pop();
            }
        }

        if (stk.isEmpty()) {
            return new int[]{-1};
        }

        return stk.stream().mapToInt(Integer::intValue).toArray();
    }
}

 

 

무작위로 K개의 수 뽑기

프로그래머스 무작위로 K개의 수 뽑기 자바

 

 

import java.util.LinkedList;

/**
 * 코딩 기초 트레이닝 Day 19
 * 무작위로 K개의 수 뽑기
 */
public class Main5 {
    public static void main(String[] args) {
        int[] result = solution(new int[]{0, 1, 1, 2, 2, 3}, 3);
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new int[]{0, 1, 1, 1, 1}, 4);
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    public static int[] solution(int[] arr, int k) {
        LinkedList<Integer> list = new LinkedList<>();

        while (list.size() < k) {
            for (int i = 0; i < arr.length; i++) {
                if (!list.contains(arr[i])) {
                    list.add(arr[i]);
                }

                if (list.size() == k) {
                    break;
                }
            }

            if (list.size() < k) {
                list.add(-1);
            }
        }

        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}
728x90
반응형