๐ ๋ฌธ์ ์ค๋ช
๋ชจ๋ ์์ฐ์ x์ ๋ํด์ ํ์ฌ ๊ฐ์ด x์ด๋ฉด x๊ฐ ์ง์์ผ ๋๋ 2๋ก ๋๋๊ณ , x๊ฐ ํ์์ผ ๋๋ 3 * x + 1๋ก ๋ฐ๊พธ๋ ๊ณ์ฐ์ ๊ณ์ํด์ ๋ฐ๋ณตํ๋ฉด ์ธ์ ๊ฐ๋ ๋ฐ๋์ x๊ฐ 1์ด ๋๋์ง ๋ฌป๋ ๋ฌธ์ ๋ฅผ ์ฝ๋ผ์ธ ๋ฌธ์ ๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๊ณผ์ ์์ ๊ฑฐ์ณ๊ฐ ๋ชจ๋ ์๋ฅผ ๊ธฐ๋กํ ์์ด์ ์ฝ๋ผ์ธ ์์ด์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
๊ณ์ฐ ๊ฒฐ๊ณผ 1,000 ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ๋ํด์๋ ์ ๋ถ ์ธ์ ๊ฐ 1์ ๋๋ฌํ๋ค๋ ๊ฒ์ด ์๋ ค์ ธ ์์ต๋๋ค.
์์์ 1,000 ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ์ ์ n์ด ์ฃผ์ด์ง ๋ ์ด๊ธฐ๊ฐ์ด n์ธ ์ฝ๋ผ์ธ ์์ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐จ ์ ํ ์ฌํญ
1 ≤ n ≤ 1,000
๐๏ธ ์ ์ถ๋ ฅ ์
n = 10, result = [10, 5, 16, 8, 4, 2, 1]
๐ก ์ ๊ทผ ๋ฐฉ๋ฒ
n๊ฐ์ ๊ณ์ ๊ณ์ฐํด๊ฐ๋ฉฐ ๋ฐฐ์ด์ ๋ฃ์ด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ArrayList๋ฅผ ์ฌ์ฉํ๋ค. (๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ )
1. n์ด 1๋ณด๋ค ํฌ๋ฉด ์ง์์ธ์ง ํ์์ธ์ง๋ฅผ ๊ตฌ๋ถํ๋ค. (while๋ฌธ ์ฌ์ฉ)
2. while๋ฌธ์ ํตํด n์ด 1๊ณผ ๊ฐ์์ง๋ฉด, ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์จ๋ค. ๊ทธ ๋ค 1์ ๋ํด์ค๋ค.
3. ArrayLlist๋ฅผ intํ ๋ฐฐ์ด๋ก ๋ณํํด์ค๋ค.
import java.util.ArrayList;
import java.util.stream.*;
class Solution {
public int[] solution(int n) {
ArrayList<Integer> answer = new ArrayList<>();
while (n > 1) {
answer.add(n);
if (n % 2 == 0) n = n / 2;
else n = n * 3 + 1;
}
answer.add(1);
return answer.stream().mapToInt(i -> i).toArray();
}
}
๐ ๋ค๋ฅธ ์ฌ๋์ ํ์ด
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.concat(
IntStream.iterate(n, i -> i > 1, i -> i % 2 == 0 ? i / 2 : i * 3 + 1),
IntStream.of(1))
.toArray();
}
}
๋๋ stream ์ ๋ค๋ฃจ๋ ์ฌ๋ ๋ณผ ๋๋ง๋ค ๋ฆฌ์คํํ๋ค... IntStream ์ด์ฉํด์ ํ์ดํ์ จ๋ค. ํ์ค๋ก ํธ์ ๋ถ๋ ๊ณ์๋๋ฐ ๋๋ฐ..
'๐ algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ์์ฐ๊ฐ ํธ๋ ์ผ์ฑ SW ์ญ๋ํ ์คํธ IM ๋๋น ๋ฌธ์ ๋ค (ํ์ด ํฌํจ) (0) | 2024.01.18 |
---|---|
[SWEA] 2063๋ฒ ์ค๊ฐ๊ฐ ์ฐพ๊ธฐ JAVA ํ์ด (0) | 2024.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ด๊ณผ ๊ตฌ๊ฐ ์ฟผ๋ฆฌ 4 JAVA(์๋ฐ) ๋ฌธ์ ํ์ด ๐ (0) | 2023.09.26 |
ํ๋ก๊ทธ๋๋จธ์ค | ์์ด๊ณผ ๊ตฌ๊ฐ ์ฟผ๋ฆฌ 2 (2) | 2023.09.19 |
ํ๋ก๊ทธ๋๋จธ์ค | ์ ์กฐ์ํ๊ธฐ 2 JAVA(์๋ฐ) (0) | 2023.09.18 |