Tags
- Study
- dfs
- ๋ฐฑํธ๋ํน
- BFS
- Dynamic Programming
- ๋๋น ์ฐ์ ํ์
- sort
- ์๋ฎฌ๋ ์ด์
- ๊ทธ๋ํ ์ด๋ก
- ๊น์ด ์ฐ์ ํ์
- Java
- stack
- ์ ๋ ฌ
- PGM
- ๊ทธ๋ํ ํ์
- LV2
- DP
- ์ ์๋ก
- ๋ฌธ์์ด
- Python
- queue
- BOJ
- CodingTest
- ์ํ
- ์๋ฃ๊ตฌ์กฐ
- Brute Force Algorithm
- ๊ตฌํ
- ๊ต์ฌ
- greedy
- SpringBoot
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2448 : ๋ณ ์ฐ๊ธฐ - 11 ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N์ด 3x2^k (0<= k <=10)๋ก ์
๋ ฅ๋๋ค.
- ์ถ๋ ฅ ํ์์ฒ๋ผ ์ฌ๊ท ํ์์ ํผ๋ผ๋ฏธ๋ ๋ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ๋๊ฐ๋ด๋ ์ฌ๊ท์ ์ธ ํน์ง์ด ๋ณด์ด๋๋ฐ, ๊ท์น์ ์ ์ํด๋ณด์.
*
* *
*****
- ๋จผ์ N์ด ๊ฐ์ฅ ์๊ฒ ์ ๋ ฅ๋์ ๊ฒฝ์ฐ๋ 3์ผ ๋์ด๋ค.
- ๋ ์์ ๋จ๊ณ๋ก ๊ฐ ์ ์์ผ๋ฏ๋ก, ์ค ๋ฒํธ๊ฐ 1, 2, 3 ์ผ ๋๋ก ๋๋์ด์ *, * *, ***** ๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค.
*
* *
*****
* *
* * * *
***** *****
- ๋ค์์ N์ด 6์ผ๋ ์ด๋ค. ์์ N์ด 3์ธ ๊ฒฝ์ฐ์ ๋ชจ์์ด 3๋ฒ๋ค์ด๊ฐ๋ค.
- ์ฌ๊ธฐ์ ๊ท์น์ ๋ณผ ์ ์๋๋ฐ, ์ค๊ฐ ์๋์ชฝ์ผ๋ก๋ N์ด 3์ธ ํผ๋ผ๋ฏธ๋๊ฐ 2๊ฐ, ๋ค์งํ ๊ณต๋ฐฑ ์ผ๊ฐํ์ด ๊ทธ ์ฌ์ด์ ๋ค์ด๊ฐ ๋ชจ์์ด๋ค.
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
- N์ด 12์ธ ๊ฒฝ์ฐ๋ N์ด 6์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ฐฌ๊ฐ์ง๋ก 2๋ฒ๋์ค๊ณ ๊ฐ์ด๋ฐ ๋ค์งํ ๊ณต๋ฐฑ ์ผ๊ฐํ์ด ๋ค์ด๊ฐ ๋ชจ์ต์ด๋ค.
- ํฌ์คํ ํ๋จ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ดํดํ๊ธฐ ํธํ ๊ฒ์ด๋ค.
- ๋ฐ๋ผ์ ๊ฐ ์ค๋ง๋ค ์ง์ ์ผ๊ฐํ์ ๋์ด๋ฅผ ์์์ผํ๋๋ฐ, ์ด๋ 3*2^k ~ 3*2^k' ๋ฒ์์ ์ํ์ง ์ฐพ๊ณ , 3*2^k๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
- ์ง์ ์ผ๊ฐํ์ ๋์ด(3*2^k)๋ฅผ ์ฐพ์์ผ๋ฉด, ํ์ฌ ์ค ๋ฒํธ์์ ์ง์ ๋์ด๋ฅผ ๋นผ์ ์ฌ๊ท๋ฅผ ์ํ ์ค ๋ฒํธ๋ฅผ ๊ตฌํ ์ ์๋ค.
- ์ด๋ ๊ฒ ๊ตฌํ ์ค ๋ฒํธ๊ฐ ์์ ๋ค์ด๊ฐ ์๋ ์ผ๊ฐํ์ ์ค ๋ฒํธ์ด๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
private static StringBuilder sb;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
for (int i = 1; i <= N; i++) {
for (int j = 0; j < N - i; j++) {
sb.append(' ');
}
recursion(i);
for (int j = 0; j < N - i; j++) {
sb.append(' ');
}
sb.append('\n');
}
sb.deleteCharAt(sb.length() - 1);
bw.write(sb.toString());
bw.flush();
}
private static void recursion(int n) {
if (n == 1) {
sb.append('*');
} else if (n == 2) {
sb.append('*');
sb.append(' ');
sb.append('*');
} else if (n == 3) {
for (int i = 0; i < 5; i++) {
sb.append('*');
}
} else { // ์ฌ๊ท
int before_max = find_before_max(n);
recursion(n - before_max);
for (int i = 0; i < (before_max * 2 - n + 1) * 2 - 1; i++) {
sb.append(' ');
}
recursion(n - before_max);
}
}
private static int find_before_max(int n) {
if (n <= 3) {
return 0;
}
int i = 0;
double num = 3 * Math.pow(2, i);
while (num < n) {
num = 3 * Math.pow(2, ++i);
}
return (int) (3 * Math.pow(2, i - 1));
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- main ๋ฉ์๋์์ ํผ๋ผ๋ฏธ๋ ์ ๋ค ๊ณต๋ฐฑ์ ์ฑ์ด๋ค.
- ์ฌ๊ท ๋ฉ์๋ recursion์์ ํผ๋ผ๋ฏธ๋ ์์ชฝ์ ๋ณ๊ณผ ๊ณต๋ฐฑ์ ์ฑ์ด๋ค.
- find_before_max ๋ฉ์๋์์ ์ง์ ์ผ๊ฐํ์ ๋์ด๋ฅผ ๊ตฌํ๋ค.
- ์ฌ๊ท ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋๋ค.
- ์ค๋ฒํธ n์ด 1, 2, 3์ธ ๊ฒฝ์ฐ๋ ์ ํด์ง ๋ชจ์์ ์ถ๋ ฅํ๋ค.
- ๊ทธ ์ธ์๋ ์ง์ ์ผ๊ฐํ, ๊ณต๋ฐฑ ์ผ๊ฐํ, ์ง์ ์ผ๊ฐํ์ ์ถ๋ ฅํด์ผํ๋ค.
- ์ง์ ์ผ๊ฐํ์ ์ถ๋ ฅํ ๋ ์ฌ๊ท๋ฅผ ์ด์ฉํ๋ค.
๐ธ end ๐ธ
- ์ค๋๋ง์ ์ฌ๊ท ๋ฌธ์ ์ ์๋ชป๊ฑธ๋ ค์ ์์ฃผ์์ฃผ ๊ณ ์ํ๋ค.
- ๊ณ์ ํ๋ฆฌ์ง ์์์ง๋ง, ์ค๊ธฐ๋ก ํ์ด๋ฅผ ๋ณด์ง์๊ณ ์งํํด์ 3์ผ์ด๋ ๊ฑธ๋ ธ๋ค.
- ์ฝํ ์คํธ๋ฆญ์ด ๋๊ฒผ๋ค๊ฐ ๋ค์ ์์ํ๋ ๋ง์๊ฐ์ง์ผ๋ก ํ์ด๋ฅผ ์ต๋ํ ๋ณด์ง ์์๋ค.
- ์์ฌ์ด ์ ์ ์กฐ๊ธ ๋ฒ๊ฑฐ๋ก์์ ๋ฌธ์ ๋ฅผ ์์ผ๋ก ํ์ดํด๊ฐ๋ฉฐ ์ ๊ทผํ์ง ์๋ค๊ฐ, ๊ฒฐ๊ตญ ์ค๋ ์์ผ๋ก ์ ์ด๊ฐ๋ฉฐ ํ์๋๋ ํ๋ ธ๋ค.
- ์ง์์ ๊ผผ๊ผผํ๊ฒ ํ์ดํ ๊ป ํํ๋๋ค.
- ๋ค์์ ํ์ดํ๋ฉด์ ๊ทธ๋ฆฐ ์์์ ์ธ๊ธํ ์ฐธ๊ณ ๊ทธ๋ฆผ์ด๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2023.09.05 |
---|---|
Lv.2 : ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (0) | 2023.09.05 |
BOJ_2206 : ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2023.08.06 |
BOJ_2096 : ๋ด๋ ค๊ฐ๊ธฐ (0) | 2023.08.03 |
BOJ_1918 : ํ์ ํ๊ธฐ์ (0) | 2023.07.09 |