[programmers] N์ง„์ˆ˜ ๊ฒŒ์ž„ - Java

'N์ง„์ˆ˜ ๊ฒŒ์ž„' ๋ฌธ์ œ๋Š” ์ฐธ๊ฐ€์ž๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์ˆซ์ž๋ฅผ ๋งํ•˜๋Š” ๊ฒŒ์ž„์œผ๋กœ, ์ฃผ์–ด์ง„ ์ง„๋ฒ•, ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐœ์ˆ˜, ์ฐธ๊ฐ€ ์ธ์›, ํŠœ๋ธŒ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ํŠœ๋ธŒ๊ฐ€ ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ดˆ๊ธฐ ์ฝ”๋“œ๋Š” ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๊ณ  ์ผ๋ถ€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ์œผ๋‚˜, ๊ฐœ์„ ๋œ ์ฝ”๋“œ์—์„œ๋Š” StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ณ , ํŠœ๋ธŒ๊ฐ€ ๋งˆ์ง€๋ง‰ ์‚ฌ๋žŒ์ผ ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ์ถœ๋ ฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.
DriedPollack's avatar
Apr 16, 2024
[programmers] N์ง„์ˆ˜ ๊ฒŒ์ž„ - Java

N์ง„์ˆ˜ ๊ฒŒ์ž„

๋ฌธ์ œ ์„ค๋ช…

ํŠœ๋ธŒ๊ฐ€ ํ™œ๋™ํ•˜๋Š” ์ฝ”๋”ฉ ๋™์•„๋ฆฌ์—์„œ๋Š” ์ „ํ†ต์ ์œผ๋กœ ํ•ด์˜ค๋Š” ๊ฒŒ์ž„์ด ์žˆ๋‹ค. ์ด ๊ฒŒ์ž„์€ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋‘ฅ๊ธ€๊ฒŒ ์•‰์•„์„œ ์ˆซ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•˜๋Š” ๊ฒŒ์ž„์ธ๋ฐ, ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  1. ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 0, ๋‘ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 1, โ€ฆ ์—ด ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 9๋ฅผ ๋งํ•œ๋‹ค.
  1. 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

More articles

See more posts

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปDriedPollack's Blog