[programmers] N์ง์ ๊ฒ์ - Java
'N์ง์ ๊ฒ์' ๋ฌธ์ ๋ ์ฐธ๊ฐ์๋ค์ด ์์๋๋ก ์ซ์๋ฅผ ๋งํ๋ ๊ฒ์์ผ๋ก, ์ฃผ์ด์ง ์ง๋ฒ, ๊ตฌํ ์ซ์์ ๊ฐ์, ์ฐธ๊ฐ ์ธ์, ํ๋ธ์ ์์์ ๋ฐ๋ผ ํ๋ธ๊ฐ ๋งํด์ผ ํ๋ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ ๊ฒ์ด๋ค. ์ด๊ธฐ ์ฝ๋๋ ์ฑ๋ฅ์ด ์ข์ง ์๊ณ ์ผ๋ถ ํ
์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ์ง ๋ชปํ์ผ๋, ๊ฐ์ ๋ ์ฝ๋์์๋ StringBuilder๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ํ๋ธ๊ฐ ๋ง์ง๋ง ์ฌ๋์ผ ๋ ์ฌ๋ฐ๋ฅธ ์ถ๋ ฅ์ ๋ณด์ฅํ๊ธฐ ์ํ ์กฐ๊ฑด์ ์ถ๊ฐํ์๋ค.
Apr 16, 2024
N์ง์ ๊ฒ์
๋ฌธ์ ์ค๋ช
ํ๋ธ๊ฐ ํ๋ํ๋ ์ฝ๋ฉ ๋์๋ฆฌ์์๋ ์ ํต์ ์ผ๋ก ํด์ค๋ ๊ฒ์์ด ์๋ค. ์ด ๊ฒ์์ ์ฌ๋ฌ ์ฌ๋์ด ๋ฅ๊ธ๊ฒ ์์์ ์ซ์๋ฅผ ํ๋์ฉ ์ฐจ๋ก๋๋ก ๋งํ๋ ๊ฒ์์ธ๋ฐ, ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ซ์๋ฅผ 0๋ถํฐ ์์ํด์ ์ฐจ๋ก๋๋ก ๋งํ๋ค. ์ฒซ ๋ฒ์งธ ์ฌ๋์ 0, ๋ ๋ฒ์งธ ์ฌ๋์ 1, โฆ ์ด ๋ฒ์งธ ์ฌ๋์ 9๋ฅผ ๋งํ๋ค.
- 10 ์ด์์ ์ซ์๋ถํฐ๋ ํ ์๋ฆฌ์ฉ ๋์ด์ ๋งํ๋ค. ์ฆ ์ดํ ๋ฒ์งธ ์ฌ๋์ 10์ ์ฒซ ์๋ฆฌ์ธ 1, ์ด๋ ๋ฒ์งธ ์ฌ๋์ ๋์งธ ์๋ฆฌ์ธ 0์ ๋งํ๋ค.
์ด๋ ๊ฒ ๊ฒ์์ ์งํํ ๊ฒฝ์ฐ,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, โฆ
์์ผ๋ก ์ซ์๋ฅผ ๋งํ๋ฉด ๋๋ค.
ํํธ ์ฝ๋ฉ ๋์๋ฆฌ ์ผ์๋ค์ ์ปดํจํฐ๋ฅผ ๋ค๋ฃจ๋ ์ฌ๋๋ต๊ฒ ์ด์ง์๋ก ์ด ๊ฒ์์ ์งํํ๊ธฐ๋ ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ์๋
0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, โฆ
์์ผ๋ก ์ซ์๋ฅผ ๋งํ๋ฉด ๋๋ค.
์ด์ง์๋ก ์งํํ๋ ๊ฒ์์ ์ต์ํด์ ธ ์ง๋ ค๊ฐ๋ ์ฌ๋๋ค์ ์ข ๋ ๋์ด๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ด์ง๋ฒ์์ ์ญ์ก์ง๋ฒ๊น์ง ๋ชจ๋ ์ง๋ฒ์ผ๋ก ๊ฒ์์ ์งํํด๋ณด๊ธฐ๋ก ํ๋ค. ์ซ์ ๊ฒ์์ด ์ต์ํ์ง ์์ ํ๋ธ๋ ๊ฒ์์ ์ ธ์ ๋ฒ์น์ ๋ฐ๋ ๊ตด์์ ํผํ๊ธฐ ์ํด, ์์ ์ด ๋งํด์ผ ํ๋ ์ซ์๋ฅผ ์ค๋งํธํฐ์ ๋ฏธ๋ฆฌ ์ถ๋ ฅํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ํ๋ธ์ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ผ.
์ ๋ ฅ ํ์
์ง๋ฒ
n
, ๋ฏธ๋ฆฌ ๊ตฌํ ์ซ์์ ๊ฐฏ์ t
, ๊ฒ์์ ์ฐธ๊ฐํ๋ ์ธ์ m
, ํ๋ธ์ ์์ p
๊ฐ ์ฃผ์ด์ง๋ค.- 2 โฆ
n
โฆ 16
- 0 ๏ผ
t
โฆ 1000
- 2 โฆ
m
โฆ 100
- 1 โฆ
p
โฆm
์ถ๋ ฅ ํ์
ํ๋ธ๊ฐ ๋งํด์ผ ํ๋ ์ซ์
t
๊ฐ๋ฅผ ๊ณต๋ฐฑ ์์ด ์ฐจ๋ก๋๋ก ๋ํ๋ธ ๋ฌธ์์ด. ๋จ, 10
~15
๋ ๊ฐ๊ฐ ๋๋ฌธ์ A
~F
๋ก ์ถ๋ ฅํ๋ค.์ ์ถ๋ ฅ ์์
n | t | m | p | result |
2 | 4 | 2 | 1 | "0111" |
16 | 16 | 2 | 1 | "02468ACE11111111" |
16 | 16 | 2 | 2 | "13579BDF01234567" |
์ฒ์ ์๋ํ ์ฝ๋
class Solution { public String solution(int n, int t, int m, int p) { String answer = ""; int cur = 1; int num = 0; while(answer.length()<t){ String str = Integer.toString(num, n).toUpperCase(); for(char c: str.toCharArray()){ if(answer.length()>=t){ return answer; } if(cur%m==p){ answer+=c; } cur++; } num++; } return answer; } }
๊ฐ์ ํ ์ฝ๋
class Solution { public String solution(int n, int t, int m, int p) { StringBuilder answer = new StringBuilder(); int cur = 1; int num = 0; while(answer.length() < t){ String str = Integer.toString(num, n).toUpperCase(); for(char c: str.toCharArray()){ if(answer.length() >= t){ return answer.toString(); } if(cur % m == p || (cur % m == 0 && p == m)) { answer.append(c); } cur++; } num++; } return answer.toString(); } }
ํต์ฌ ํค์๋
- ์ฒ์ ์๋ํ ์ฝ๋๋
String
์ ๊ณ์ํด์ ํฉ์ฐ์ฐ์ ์ฌ์ฉํด์ ์ฑ๋ฅ์ด ์ข์ง ๋ชปํ๊ณ , ํด๋นํ๋ ์ฐจ๋ก์ธ์ง ๊ฒ์ฌํ๋ ์กฐ๊ฑด์ด ์ฌ๋ฐ๋ฅด์ง ์์ ๋ช๋ช ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค.
- ์ด๋ฅผ ๊ฐ์ ํด์
p
๊ฐ ๋ง์ง๋ง ์ฌ๋์ผ ๋ ์ฌ๋ฐ๋ฅธ ์ถ๋ ฅ์ ๋ณด์ฅํ๊ธฐ ์ํดp
๊ฐm
๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์กฐ๊ฑด์ ์ถ๊ฐํ๊ณ ,StringBuilder
๋ฅผ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์ต์ ํํ๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฉด์ Java์์์ ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ฐ์ตํ ์ ์์๋ค.
Share article