
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].