๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž ๋ฐฐ์—ด

by carrot0911 2024. 11. 11.

๋ฌธ์ œ ์„ค๋ช…

array์˜ ๊ฐ element ์ค‘ divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.
divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” element๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ๋ฐฐ์—ด์— -1์„ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

https://school.programmers.co.kr/learn/courses/30/lessons/12910

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์ œํ•œ ์‚ฌํ•ญ

  • arr์€ ์ž์—ฐ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • ์ •์ˆ˜ i, j์— ๋Œ€ํ•ด i ≠ j ์ด๋ฉด arr[i] ≠ arr[j] ์ž…๋‹ˆ๋‹ค.
  • divisor๋Š” ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • array๋Š” ๊ธธ์ด 1 ์ด์ƒ์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3, 2, 6] 10 [-1]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

arr์˜ ์›์†Œ ์ค‘ 5๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์›์†Œ๋Š” 5์™€ 10์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [5, 10]์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

arr์˜ ์›์†Œ ์ค‘ 1๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์›์†Œ๋Š” 5์™€ 10์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [1, 2, 3, 36] ์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

3, 2, 6์€ 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์›์†Œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ [-1]์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int count = 0;
        
        for (int num : arr) {
            if (num % divisor == 0) {
                count ++;
            }
        }
        
        int[] answer = new int[count];
        
        int index = 0;
        
        for (int num : arr) {
            if (num % divisor == 0) {
                answer[index++] = num;
            }
        }
        
        if (answer.length == 0) {
            return new int[]{-1};
        }
        
        Arrays.sort(answer);
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

  • for (int num : arr) { } : ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด arr์—์„œ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๋ณ€์ˆ˜ num์— ์ž…๋ ฅ๋˜๋„๋ก ๋ฐ˜๋ณตํ•œ๋‹ค.
    • if (num % divisor == 0) { count++ } : ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜ num์„ divisor๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค๋ฉด count๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.
  • int[ ] answer = new int[count] : ๊ธธ์ด๊ฐ€ count์ธ ๋ฐฐ์—ด answer๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • for (int num : arr) { } : ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด arr์—์„œ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ๋ณ€์ˆ˜ num์— ์ž…๋ ฅ๋˜๋„๋ก ๋ฐ˜๋ณตํ•œ๋‹ค.
    • if (num % divisor == ) { } : ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜ num์ด divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ์‹คํ–‰ํ•œ๋‹ค.
      • answer[index++] = num : ๋ฐฐ์—ด answer์˜ ์ธ๋ฑ์Šค๋ฅผ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ๋ณ€์ˆ˜ num์˜ ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.
  • if (answer.length == 0) { } : ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด answer์˜ ๊ธธ์ด๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์‹คํ–‰ํ•œ๋‹ค.
    • return new int[ ]{-1} : ๊ธธ์ด๊ฐ€ 1์ด๊ณ  ๊ฐ’์ด -1์ธ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.
  • Arrays.sort(answer) : ๋ฐฐ์—ด answer๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์ถ”๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

import java.util.*; // java.util ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค import

class Solution {
    public ArrayList<Integer> solution(int[] arr, int divisor) {
        ArrayList<Integer> answer = new ArrayList<>();
        
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % divisor == 0) {
                answer.add(arr[i]);
            }
        }
        
        if (answer.size() == 0) {
            answer.add(-1);
        }
        
        Collections.sort(answer);
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

  • import java.util.* : java.util ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ArrayList<Integer> answer = new ArrayList< >( ) : ๊ธธ์ด๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋™์  ๋ฆฌ์ŠคํŠธ answer๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • for (int i = 0; i < arr.length; i++) { } : ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜ i๊ฐ€ 0๋ถ€ํ„ฐ arr.length - 1๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • if (arr[i] % divisor == 0) { } : ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด arr์˜ i๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์ด divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ์‹คํ–‰ํ•œ๋‹ค.
      • answer.add(arr[i]) : ๋ฐฐ์—ด answer์— ๋ฐฐ์—ด arr์˜ i๋ฒˆ์งธ ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • if (answer.size( ) == 0) : ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด answer์˜ ๊ธธ์ด๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์‹คํ–‰ํ•œ๋‹ค.
    • answer.add(-1) : ๋ฐฐ์—ด answer์— -1 ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • Collections.sort(answer) : ๋ฐฐ์—ด answer๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.

 

๋™์  ๋ฆฌ์ŠคํŠธ ArrayList

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํฌ๊ธฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
Java์—์„œ ๋™์  ๋ฆฌ์ŠคํŠธ๋Š” ArrayList ํด๋ž˜์Šค๊ฐ€ ๋Œ€ํ‘œ์ ์œผ๋กœ, ํ‘œ์ค€ ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋œ๋‹ค.

๋™์ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋œ๋‹ค.
  • ์š”์†Œ ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฒ€์ƒ‰ ๋“ฑ์˜ ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ๋™์  ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ์œ ์—ฐํ•ด์ง„๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ์ž๋™ ํฌ๊ธฐ ์กฐ์ ˆ : ArrayList์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•„์š”์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ปค์ง„๋‹ค.
  • ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜ ์ ‘๊ทผ : ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ œ๋„ค๋ฆญ ์‚ฌ์šฉ : ์ œ๋„ค๋ฆญ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ํƒ€์ž…์˜ ์š”์†Œ๋งŒ ์ €์žฅํ•˜๋„๋ก ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

ArrayList<String> list = new ArrayList<>();  // ๋™์  ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

list.add("Apple");  // ๋ฐฐ์—ด์— ์š”์†Œ ์ถ”๊ฐ€

String fruit = list.get(0);  // ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผ

list.remove(1);  // ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์‚ญ์ œ

int size = list.size();  // ๋ฐฐ์—ด ๊ธธ์ด ํ™•์ธ

boolean isEmpty = list.isEmpty();  // ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ