Problem ๐Ÿ’ป

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

์ •์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n ์ดํ•˜์˜ ํ™€์ˆ˜๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด๊ธด ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

Approach 1 โŒ - ๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ๋ฒ•.

 n์ดํ•˜์˜ ์ •์ˆ˜๋“ค์„ ํ™€์ˆ˜๋กœ๋งŒ ๊ณจ๋ผ๋‚ด๊ธฐ ์œ„ํ•ด์„œ

for๋ฌธ์œผ๋กœ n์ดํ•˜์˜ ์ •์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋„์ง‘์–ด๋‚ด๋ฉด์„œ,

if๋ฌธ์˜ ์กฐ๊ฑด์œผ๋กœ n%2 == 1๋งŒ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋ฐฐ์—ด์— answer์ด๋ผ๋Š” ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค.

์ด ๊ณผ์ •์€ for๋ฌธ ์•ˆ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

for๋ฌธ ์ „์— int[] answer = new int[n/2];๋กœ ํ™€์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.


Approach 2 โญ• - ๋‚˜์˜ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•œ ๊ต์ •.

1. ํ™€์ˆ˜ ์ถ”์ถœ :

    n ์ดํ•˜์˜ ์ •์ˆ˜ ์ค‘ ํ™€์ˆ˜๋งŒ ์„ ํƒ.

2. ๋ฐฐ์—ด ํฌ๊ธฐ ๊ณ„์‚ฐ :

     n์ด ์ง์ˆ˜์ธ์ง€ ํ™€์ˆ˜์ธ์ง€์— ๋”ฐ๋ผ ํ™€์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜์—ฌ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ๋‹ค.

      (๋‚˜์˜ ์ดˆ๊ธฐ ์ ‘๊ทผ๋ฒ•์—์„œ๋Š” ๋ฌด์กฐ๊ฑด n/2๊ฐœ๊ฐ€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ผ๊ณ  ์ •ํ–ˆ๋‹ค. n์ด ํ™€์ˆ˜์ธ์ง€ ์ง์ˆ˜์ธ์ง€์— ๋”ฐ๋ผ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.)

3. ๋ฐฐ์—ด์˜ ํ™€์ˆ˜ ์ €์žฅ :

     for๋ฌธ์„ ์‚ฌ์šฉํ•ด ํ™€์ˆ˜๋งŒ ๋ฐฐ์—ด์— ์ €์žฅ.

 


Solution ๐Ÿ’ก

<์ฃผ์š” ์ž๋ฐ” ๋ฌธ๋ฒ•>

1. for ๋ฐ˜๋ณต๋ฌธ : ํŠน์ • ๋ฒ”์œ„์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆœํšŒ

for (int i = 1; i <= n; i++) {
   //์‹คํ–‰๋ฌธ
}

2. ์กฐ๊ฑด๋ฌธ if : ํŠน์ • ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰.

if (์กฐ๊ฑด) {
    // ์‹คํ–‰๋ฌธ
}

3. ๋ฆฌ์ŠคํŠธ์™€ ๋ฐฐ์—ด ๋ณ€ํ™˜ : ๋ฆฌ์ŠคํŠธ๋Š” ๋™์  ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅ.

List<Integer> list = new ArrayList<>();
int[] array = new int[list.size()];
for (int i = 0; i <list.size(); i++) {
     array[i] = list.get(i);
}

< ์ •๋‹ต ์ฝ”๋“œ >

import java.util.ArrayList;
import java.util.List;

public class Solution {
   public static int[] solution(int n) {
       // Step 1 : ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•ด ํ™€์ˆ˜๋ฅผ ์ €์žฅ (๋ฐฐ์—ด ํฌ๊ธฐ ๊ณ„์‚ฐ ๋ถˆํ•„์š”)
       List<Integer> oddNumbers = new ArrayList<>();
       
       // Step 2 : 1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉฐ ํ™€์ˆ˜์ธ์ง€ ํ™•์ธ
       for (int i =1; i <= n; i++) {
           if (i % 2 == 1) { //ํ™€์ˆ˜ ์กฐ๊ฑด
               oddNumbers.add(i)
           }
       }
       // Step 3 : ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜
       int[] answer = new int[oddNumbers.size()];
       for (int i = 0; i < oddNumbers.size(); i++) {
           answer[i] = oddNumbers.get(i);
       }
       
       return answer;
   }
   
   // ํ…Œ์ŠคํŠธ ๋ฉ”์ธ ๋ฉ”์„œ๋“œ
   public static void main(String[] args) {
       int n = 10;
       int [] result = solution(n);
       
       //๊ฒฐ๊ณผ ์ถœ๋ ฅ
       for (int num : result) {
           System.out.print(num + " ");
       }
   
   }


}

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

1. List ์‚ฌ์šฉ ์ด์œ  :

    - ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์‚ฌ์ „์— ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ณ  ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ.

    - ์ดˆ๊ธฐ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์•„๋„ ๋จ.

 

2. ํ™€์ˆ˜ ์กฐ๊ฑด :

if (i % 2 == 1) {

     - i % 2๊ฐ€ 1์ธ ๊ฒฝ์šฐ i๋Š” ํ™€์ˆ˜.

 

3. ๋ฆฌ์ŠคํŠธ -> ๋ฐฐ์—ด ๋ณ€ํ™˜

int[] answer = new int[oddNumbers.size()];
for (int i = 0; i < oddNumbers.size(); i++) {
    answer[i] = oddNumbers.get(i);
}

       - ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ๊ฐ’๋“ค์„ ๋ฐฐ์—ด์— ๋ณต์‚ฌ. 

 

4. ํ…Œ์ŠคํŠธ ์ถœ๋ ฅ:

      - ๋ฐฐ์—ด์„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ถœ๋ ฅํ•ด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ.


<  ArrayList ๋ž‘ ArrayList์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ์•„๋ณผ๊นŒ?  >

1. ArrayList๋ž€

ArrayList๋Š” ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ€๋ณ€ํฌ๊ธฐ ๋ฐฐ์—ด์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ด๋‹ค.

์ฆ‰, ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฐฐ์—ด์˜ ํ˜•ํƒœ์ด๋‹ค.

 

java.util.ArrayList ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ,

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค :

- ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ, ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์žฅํ•  ์ˆ˜ ์žˆ์Œ.

- ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ๋•Œ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ ๋˜๋Š” ๊ฐ์†Œ.

- ์ธ๋ฑ์Šค(0๋ถ€ํ„ฐ ์‹œ์ž‘)๋ฅผ ์‚ฌ์šฉํ•ด ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.

 

2. ์ฃผ์š” ๋ฉ”์„œ๋“œ 

- add(E e) : ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€.

- get(int index) : ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜.

- size() : ๋ฆฌ์ŠคํŠธ์˜ ํ˜„์žฌ ํฌ๊ธฐ(์š”์†Œ ๊ฐœ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜.

 

3. ์ด ์ฝ”๋“œ์— ์‚ฌ์šฉ๋œ get(int index)๋ฉ”์„œ๋“œ

 ์—ญํ• : 

- ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ • ์ธ๋ฑ์Šค ์œ„์น˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

- ๋ฐ˜ํ™˜ ํƒ€์ž…์€ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ €์žฅํ•˜๋Š” ์š”์†Œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋™์ผํ•˜๋‹ค.

๋ฌธ๋ฒ• :

E get(int index)

- E : ArrayList์— ์ €์žฅ๋œ ์š”์†Œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(์ œ๋„ค๋ฆญ ํƒ€์ž…)

 

 


< ์ œ๋„ค๋ฆญ ํƒ€์ž…์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ? >

์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ• ์ง€ ๋ฏธ๋ฆฌ ์ •ํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์— ํƒ€์ž…์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.์ž๋ฐ”์—์„œ ์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์ฃผ๋กœ <>๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ํ‘œ์‹œํ•œ๋‹ค. 

ArrayList<Integer> numbers = new ArrayList<>();

 

์ œ๋„ค๋ฆญ(Generic) ํƒ€์ž…๊ณผ  ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type)์€ ๋ญ์ง€?

 

1. ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type)์ด๋ž€?

 ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ปดํ“จํ„ฐ์—์„œ ๋‹ค๋ฃจ๋Š” "๋ฐ์ดํ„ฐ ์ข…๋ฅ˜" ๋œปํ•œ๋‹ค. 

 

 

์˜ˆ๋ฅผ ๋“ค์–ด:

์ˆซ์ž: ์ •์ˆ˜(int), ์†Œ์ˆ˜(double) ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋Š” ํƒ€์ž….

์˜ˆ: 1, 42, 3.14

๊ธ€์ž: ๋ฌธ์ž(char), ๋ฌธ์ž์—ด(String) ๊ฐ™์€ ๊ธ€์ž๋ฅผ ์ €์žฅํ•˜๋Š” ํƒ€์ž….

์˜ˆ: 'A', "Hello"

์ฐธ/๊ฑฐ์ง“: ๋…ผ๋ฆฌํ˜•(boolean).

์˜ˆ: true, false

 

๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์˜ˆ์‹œ

int number = 10; // ์ •์ˆ˜ ํƒ€์ž…

double pi = 3.14; // ์†Œ์ˆ˜ ํƒ€์ž…

String greeting = "Hello"; // ๋ฌธ์ž์—ด ํƒ€์ž…

boolean isEven = true; // ์ฐธ/๊ฑฐ์ง“ ํƒ€์ž…

 

 

2. ์ œ๋„ค๋ฆญ(Generic) ํƒ€์ž…์ด๋ž€?

์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ• ์ง€ ๋ฏธ๋ฆฌ ์ •ํ•˜์ง€์•Š๊ณ , ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์— ํƒ€์ž…์„ ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

๋น„์œ ๋กœ ์„ค๋ช…:

“์ผ๋ฐ˜ ์ƒ์ž(Box)“๋ฅผ ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์ƒ์ž๋Š” ์•ˆ์— ์–ด๋–ค ๋ฌผ๊ฑด์ด ๋“ค์–ด๊ฐˆ์ง€ ๋ฏธ๋ฆฌ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์‚ฌ๊ณผ๋ฅผ ๋‹ด์„ ์ˆ˜๋„ ์žˆ๊ณ , ์ฑ…์„ ๋‹ด์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์ด๋Ÿฐ  “๋ชจ๋“  ๋ฌผ๊ฑด์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ƒ์ž”์™€ ๊ฐ™์•„์š”.

๋‚˜์ค‘์— ์ด ์ƒ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ๊ณผ๋ฅผ ๋„ฃ๊ฒ ๋‹ค! ๋˜๋Š” ์ฑ…์„ ๋„ฃ๊ฒ ๋‹ค! ๋ผ๊ณ  ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ์˜ˆ

์ž๋ฐ”์—์„œ ์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์ฃผ๋กœ <> ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ํ‘œ์‹œํ•ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด:

 

ArrayList<Integer> numbers = new ArrayList<>();

 

์—ฌ๊ธฐ์„œ ArrayList<Integer>๋Š” ์ •์ˆ˜(Integer)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ œ๋„ค๋ฆญ ํƒ€์ž…  <Integer>๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ €์žฅํ• ์ง€ ๋ช…ํ™•ํžˆ ์•Œ๋ ค์ค€๋‹ค.

 

์ œ๋„ค๋ฆญ์ด ์—†๋Š” ๊ฒฝ์šฐ์™€ ๋น„๊ต:

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ ํƒ€์ž…(์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ)์„ ์„ž์–ด์„œ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ๊ทธ ๊ฒฝ์šฐ, ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์š”.

 

์ œ๋„ค๋ฆญ ์—†์ด ์‚ฌ์šฉ:

ArrayList list = new ArrayList(); // ํƒ€์ž… ๋ช…์‹œ X

list.add(1);         // ์ •์ˆ˜

list.add("Hello");   // ๋ฌธ์ž์—ด

 

์ œ๋„ค๋ฆญ ์‚ฌ์šฉ:

ArrayList<String> list = new ArrayList<>();

list.add("Hello");  // ๋ฌธ์ž์—ด๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ

 

์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์ง€์ •ํ•˜๋ฉด ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ œํ•œ๋˜๋ฏ€๋กœ, ๋” ์•ˆ์ „ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

3. ์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ์žฅ์ 

1. ํƒ€์ž… ์•ˆ์ •์„ฑ(Type Safety):

์ œ๋„ค๋ฆญ์€ ์–ด๋–ค ํƒ€์ž…์ด ์ €์žฅ๋˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์–ด ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

์˜ˆ: ArrayList<Integer>๋Š” ์ •์ˆ˜๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ:

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ์ƒ๊ด€์—†์ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

์˜ˆ: ๊ฐ™์€ ArrayList ํด๋ž˜์Šค๊ฐ€ ์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

3. ํ˜•๋ณ€ํ™˜(Casting)์ด ๋ถˆํ•„์š”:

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ ํƒ€์ž…์„ ๋”ฐ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์•„๋„ ๋ผ์š”.

 

4. ์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ๋ฌธ๋ฒ•

์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” <> ๊ธฐํ˜ธ ์•ˆ์— ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ ์–ด์ค€๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” ArrayList ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ ๋ฌธ๋ฒ•:

 

ArrayList<T> list = new ArrayList<>();

 

์—ฌ๊ธฐ์„œ  T๋Š” ํƒ€์ž…์„ ์˜๋ฏธํ•˜๋ฉฐ, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.

 

< ๋ฐ์ดํ„ฐ ํƒ€์ž… ์˜ˆ์‹œ: >

 

1. ์ •์ˆ˜(Integer) ๋ฆฌ์ŠคํŠธ:

 

ArrayList<Integer> intList = new ArrayList<>();

intList.add(1); // ์ •์ˆ˜๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ

 

 

2. ๋ฌธ์ž์—ด(String) ๋ฆฌ์ŠคํŠธ:

 

ArrayList<String> strList = new ArrayList<>();

strList.add("Hello"); // ๋ฌธ์ž์—ด๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ

 

 

3. ์ฐธ/๊ฑฐ์ง“(Boolean) ๋ฆฌ์ŠคํŠธ:

 

ArrayList<Boolean> boolList = new ArrayList<>();

boolList.add(true); // ์ฐธ/๊ฑฐ์ง“ ๊ฐ’๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ

 

5. ์ œ๋„ค๋ฆญ ํƒ€์ž…์˜ ์‹ค์ œ ์‚ฌ์šฉ

 

์•ž์—์„œ ๋ณธ ์ฝ”๋“œ์—์„œ๋„ ์ œ๋„ค๋ฆญ ํƒ€์ž…์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

List<Integer> oddNumbers = new ArrayList<>();

 

<Integer>: ์ •์ˆ˜๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ฆ.

oddNumbers.get(i):

์ •์ˆ˜๋ฅผ ์ €์žฅํ–ˆ์œผ๋ฏ€๋กœ, ๊บผ๋‚ผ ๋•Œ๋„ ์ •์ˆ˜(Integer)๋กœ ๋ฐ˜ํ™˜.

 

6. ์š”์•ฝ

 

๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ •์ˆ˜, ๋ฌธ์ž์—ด, ์ฐธ/๊ฑฐ์ง“์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ๋งํ•œ๋‹ค.

์ œ๋„ค๋ฆญ ํƒ€์ž…์€ ์ฝ”๋“œ๋ฅผ ๋” ์•ˆ์ „ํ•˜๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ๋กœ, ์ €์žฅํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋‚˜์ค‘์— ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด, ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง€๊ณ  ํ˜•๋ณ€ํ™˜์ด ํ•„์š” ์—†์–ด์„œ ๋” ๊ฐ„ํŽธํ•˜๋‹ค.


 

์˜ˆ์™ธ ์ฒ˜๋ฆฌ:

๋งŒ์•ฝ index๊ฐ€ ๋ฆฌ์ŠคํŠธ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด IndexOutOfBoundsException์ด ๋ฐœ์ƒํ•œ๋‹ค.

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 5 out of bounds for length 3

 

์‚ฌ์šฉ ์˜ˆ์‹œ

import java.util.ArrayList;

public class Main {
   public static void main(String[] args) {
       // ArrayList ์ƒ์„ฑ
       ArrayList<Integer> oddNumbers = new ArrayList<>();
       
       // ๋ฆฌ์ŠคํŠธ์— ํ™€์ˆ˜ ์ถ”๊ฐ€
       oddNumbers.add(1);
       oddNumbers.add(3);
       oddNumbers.add(5);
       
       //get()๋ฉ”์„œ๋“œ๋กœ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
       System.out.println("์ฒซ ๋ฒˆ์งธ ์š”์†Œ" + oddNumbers.get(0)); //์ถœ๋ ฅ: 1
       System.out.println("๋‘ ๋ฒˆ์งธ ์š”์†Œ" + oddNumbers.get(1)); //์ถœ๋ ฅ: 3
   }

}

 

<๊ฒฐ๊ณผ>

์ฒซ ๋ฒˆ์งธ ์š”์†Œ: 1
๋‘ ๋ฒˆ์งธ ์š”์†Œ: 3
์„ธ ๋ฒˆ์งธ ์š”์†Œ: 5

 

< oddNumbers.get(i)์™€ ๋ฐ˜๋ณต๋ฌธ >

oddNumbers.get(i)๋Š” ๋ฐ˜๋ณต๋ฌธ๊ณผ ํ•จ๊ป˜ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

import java.util.ArrayList;

public class Main {
   public static void main(String[] args) {
       // ArrayList ์ƒ์„ฑ ๋ฐ ๊ฐ’ ์ถ”๊ฐ€
       ArrayList<Integer> oddNumbers = new ArrayList<>();
       oddNumbers.add(1);
       oddNumbers.add(3);
       oddNumbers.add(5);
       
       //๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ ์ถœ๋ ฅ
       for (int i = 0; i < oddNumbers.size(); i++) {
           System.out.println("์ธ๋ฑ์Šค " + i + "์˜ ๊ฐ’" + oddNumbers.get(i))
       }
   
   }

}
์ธ๋ฑ์Šค 0์˜ ๊ฐ’: 1
์ธ๋ฑ์Šค 1์˜ ๊ฐ’: 3
์ธ๋ฑ์Šค 2์˜ ๊ฐ’: 5

 

< ์ฃผ์˜์‚ฌํ•ญ >

1. ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘:

oddNumbers.get(0)์€ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜.

oddNumbers.get(oddNumbers.size() - 1)์€ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜.

 

2. ๋ฒ”์œ„ ์ดˆ๊ณผ ์˜ˆ์™ธ:

์œ ํšจํ•œ ์ธ๋ฑ์Šค ๋ฒ”์œ„: 0 <= index < oddNumbers.size().

๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด IndexOutOfBoundsException์ด ๋ฐœ์ƒ.

 

 

<์‹ค์ œ ์ฝ”๋“œ์—์„œ์˜ ์—ญํ• >

oddNumbers.get(i)๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ i๋ฒˆ์งธ ํ™€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด:

int[] answer = new int[oddNumbers.size()];
for (int i = 0; i < oddNumbers.size(); i++) {
    answer[i] = oddNumbers.get(i);
}

์ด ์ฝ”๋“œ์˜ ๋™์ž‘:

oddNumbers.get(i)๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ i๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ด.

answer[i]์— ํ•ด๋‹น ๊ฐ’์„ ์ €์žฅ.

 

<ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋Œ€์•ˆ>

for-each ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด get()์„ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค:

for (int num : oddNumbers) {
    System.out.println(num);
}

 

oddNumbers.get(i)๋Š” ArrayList์˜ ํŠน์ • ์ธ๋ฑ์Šค ์œ„์น˜์— ์žˆ๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
์ด๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ํ™œ์šฉํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ๋ฉ”์„œ๋“œ๋กœ, 
for ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ for-each์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.



<๊ฐœ์„ ๋œ ์ ‘๊ทผ๋ฒ•> - ๋ฏธ๋ฆฌ ๋ฐฐ์—ด ํฌ๊ธฐ ๊ณ„์‚ฐ

(์–ด๋–ค ์ˆซ์ž n์ด ์ฃผ์–ด์ง€๋ฉด, ๊ทธ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ํ™€์ˆ˜๋“ค์„ ๋ชจ์•„์„œ ๋ฐฐ์—ด์— ๋‹ด๊ธฐ)

๋งŒ์•ฝ์— ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•˜์—ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

public static int[] solution(int n) {
    // ํ™€์ˆ˜ ๊ฐœ์ˆ˜ ๊ณ„์‚ฐ
    int size = (n + 1) / 2;
    
    // ๋ฐฐ์—ด ์ƒ์„ฑ
    int[] answer = new int[size];
    
    // ํ™€์ˆ˜ ์ €์žฅ
    int index = 0;
    for (int i = 1; i <= n; i += 2) {
        answer[index++] = i;
    }

    return answer;
}

์ด ๋ฐฉ๋ฒ•์˜ ์žฅ์  :

 - ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ.

 - ๋ฐ˜๋ณต๋ฌธ์ด n ๋Œ€์‹  n /. 2๋ฒˆ๋งŒ. ์‹คํ–‰

 

๊ฐœ์„ ๋œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช….

1. ํ•จ์ˆ˜ ์ด๋ฆ„๊ณผ ๋ชฉํ‘œ

public static int[] solution(int n)

 - ์ด ์ฝ”๋“œ๋Š” solution์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ•จ์ˆ˜์ด๋‹ค.

 -  ์ˆซ์ž n์ด ์ฃผ์–ด์ง€๋ฉด, n์ดํ•˜์˜ ๋ชจ๋“  ํ™€์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 -  ์˜ˆ๋ฅผ ๋“ค์–ด, n = 7์ด๋ฉด, [1, 3, 5, 7]์ด๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋Œ๋ ค์ค€๋‹ค.

 

2. ํ™€์ˆ˜์˜ ๊ฐœ์ˆ˜ ๊ณ„์‚ฐ

int size = (n + 1) / 2;

 

- ์—ฌ๊ธฐ์„œ size๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ(ํ™€์ˆ˜์˜ ๊ฐœ์ˆ˜)๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

- ์˜ˆ๋ฅผ ๋“ค์–ด:

    -  n = 7 ์ด๋ฉด, size = (7+1) /2 =4 (1,3,5,7 ์ด 4๊ฐœ์˜ ํ™€์ˆ˜)

    -  n = 8 ์ด๋ฉด, size = (8+1) /2= 4 (1,3,5,7 ์ด 4๊ฐœ์˜ ํ™€์ˆ˜)

 ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€
ํ™€์ˆ˜๋ผ๋ฉด +1ํ•˜์—ฌ /2ํ•˜๋ฉด ํ™€์ˆ˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ณ 
์ง์ˆ˜๋ผ๋ฉด +1 ํ•˜์—ฌ /2ํ•˜๋ฉด ์ •์ˆ˜ํ˜•์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜๋ฏ€๋กœ ์†Œ์ˆ˜์  ๋ฒ„๋ฆฌ๊ณ  ํ™€์ˆ˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.


3. ๋นˆ ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ

int[] answer = new int[size];

 

 

4. ํ™€์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ธฐ

int index = 0;
for (int i =1; i <= n; i+=2) {
    answer[index++] = i;
}

 ์ด ๋ถ€๋ถ„์€ ๋ฐฐ์—ด์— ํ™€์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋‹ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

 

    4-1) for ๋ฐ˜๋ณต๋ฌธ :

- for (int i = 1; i <= n; i += 2) :

    i๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ, 2์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค(์ฆ‰, ํ™€์ˆ˜๋งŒ ๊ฐ€๋ฆฌํ‚จ๋‹ค)

    ๋ฐ˜๋ณต๋ฌธ์€ i๊ฐ€ n๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋•Œ๊นŒ์ง€๋งŒ ์‹คํ–‰๋œ๋‹ค. 

 

   4-2) answer[index++] = i :

- answer ๋ฐฐ์—ด์— i ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

- index++๋Š” ๊ฐ’์„ ๋„ฃ์€ ๋’ค, ๋‹ค์Œ ๋นˆ์นธ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.

- ์˜ˆ๋ฅผ ๋“ค์–ด, n = 7์ผ ๋•Œ์˜ ๊ณผ์ •์„ ๋ณด์ž. 

    ์ฒ˜์Œ: i = 1, answer[0] = 1 → ๋ฐฐ์—ด์€ [1, , , ].

    • ๋‘ ๋ฒˆ์งธ: i = 3, answer[1] = 3 → ๋ฐฐ์—ด์€ [1, 3, , ].

    • ์„ธ ๋ฒˆ์งธ: i = 5, answer[2] = 5 → ๋ฐฐ์—ด์€ [1, 3, 5, ].

    • ๋„ค ๋ฒˆ์งธ: i = 7, answer[3] = 7 → ๋ฐฐ์—ด์€ [1, 3, 5, 7].

 

 

 

 

 

 

 

 

+ Recent posts