๊ธฐ๋ก๋ฐฉ

Lv.2 : n์ง„์ˆ˜ ๊ฒŒ์ž„ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : n์ง„์ˆ˜ ๊ฒŒ์ž„

Soom_1n 2023. 11. 11. 19:09

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


 


๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ง„๋ฒ•, ๊ตฌํ•  ์ˆซ์ž์˜ ์ˆ˜, ์ฐธ๊ฐ€ ์ธ์› ์ˆ˜, ํŠœ๋ธŒ์˜ ์ˆœ์„œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
  • ์ •์ˆ˜๋ฅผ 0๋ถ€ํ„ฐ ์ ์  ๋Š˜๋ ค๊ฐ€๋ฉฐ, ์ฃผ์–ด์ง„ ์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ์ˆซ์ž๋ฅผ ํ•œ ๋ฌธ์ž์”ฉ ์ฐธ๊ฐ€ ์ธ์›๋“ค์ด ๋งํ•œ๋‹ค.
  • ํŠœ๋ธŒ๊ฐ€ ๊ตฌํ•  ์ˆซ์ž์˜ ์ˆ˜ ๋งŒํผ ๋งํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ๋Š˜๋ ค๊ฐ€๋ฉฐ ํŠœ๋ธŒ๊ฐ€ t๋ฒˆ ๋งํ•  ๋•Œ ๊นŒ์ง€ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  • ํ˜„์žฌ ์ˆซ์ž๋ฅผ n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ ๋’ค, ํ•œ ๊ธ€์ž์”ฉ ์ธ์› ์ˆœ์„œ๋Œ€๋กœ ๋งํ•œ๋‹ค.
  • ํ˜„์žฌ ์ธ์›์ด ํŠœ๋ธŒ์ด๋ฉด ๊ธฐ๋กํ•œ๋‹ค.
  • ๊ธฐ๋ก ๋œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

class Solution {
    public String solution(int n, int t, int m, int p) {
        StringBuilder sb = new StringBuilder();
        p--; // ์ฒซ ์ˆœ์„œ๊ฐ€ 0์ด ๋˜๊ฒŒ ๋ณ€ํ™˜
        int seq = 0; // ํ˜„์žฌ ์ˆซ์ž๋ฅผ ๋งํ•ด์•ผํ•˜๋Š” ์‚ฌ๋žŒ ์ˆœ์„œ
        int num = 0; // ํ˜„์žฌ ์ˆซ์ž์˜ 10์ง„์ˆ˜

        while (sb.length() < t) {
            char[] chars = Integer.toString(num, n).toCharArray(); // ํ˜„์žฌ ๋‚˜๋ˆ ์„œ ๋ถˆ๋Ÿฌ์•ผ ํ•˜๋Š” ์ˆซ์ž ๋ฐฐ์—ด

            for (int i = 0; i < chars.length; i++) {
                if (seq == p) {
                    sb.append(chars[i]);
                    if (sb.length() >= t) break;
                }
                seq = (seq + 1) % m;
            }

            num++;
        }

        return sb.toString().toUpperCase();
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ๊ณ„์‚ฐ์„ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด p๋Š” 1๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹Œ 0๋ถ€ํ„ฐ ์ˆœ์„œ๋ฅผ ์„ธ๋„๋ก -1๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • ํŠœ๋ธŒ๊ฐ€ ๋งํ•œ ์ˆซ์ž๊ฐ€ t๊ฐœ๊ฐ€ ๋  ๋–„๊นŒ์ง€ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ํ˜„์žฌ ์ˆซ์ž๋ฅผ n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•ด char๋ฐฐ์—ด chars์— ์ €์žฅํ•œ๋‹ค.
    • chars์˜ ํ•œ ๋ฌธ์ž์”ฉ ์ง„ํ–‰ํ•˜๋ฉฐ ํŠœ๋ธŒ ์ฐจ๋ก€๊ฐ€ ๋˜๋ฉด Stringbuilderํ˜•์ธ sb์— ์ €์žฅํ•œ๋‹ค.
  • sb๋ฅผ String์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ํ˜„์žฌ ํ’€์ด๋Š” n์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณตํ•˜๋Š”๋ฐ, ์›๋ž˜๋Š” ํŠœ๋ธŒ ์ˆœ์„œ๊นŒ์ง€ ์ ํ”„ํ•ด์„œ ๊ณ„์‚ฐํ•˜๊ณ ์ž ํ–ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ seq๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ณ„์‚ฐ์ด ๊ดœํžˆ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ๋ƒฅ ๋‹จ์ˆœ ๋ฐ˜๋ณต์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.
  • ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ๋ดค๋Š”๋ฐ, ๋‚˜์ฒ˜๋Ÿผ ์ฐธ๊ฐ€์ธ์›๋“ค์˜ ์ˆœ์„œ๋ฅผ 0์œผ๋กœ ๋Œ๋ ค๊ฐ€๋ฉฐ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ, ๊ณ„์‚ฐ์˜ ์ตœ๋Œ€๊ฐ’์ธ m*t ๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ๋‚˜์—ดํ•ด๋†“๊ณ  ํŠœ๋ธŒ ์ˆœ์„œ๋งŒํผ ๋„˜์–ด๊ฐ€๋ฉฐ ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๊ณ ๋ฅด๋Š” ์‹์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์—ˆ๋‹ค.
    • ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ˜๋ณต ํ•  ๋งŒํผ ๋ฌธ์ž์—ด์„ ๋Š˜๋ ค๋ฒ„๋ฆฐ๋‹ค๋Š”๊ฒŒ ์•„์ฃผ ์ธ์ƒ๊นŠ์€ ํ’€์ด์—ˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ›จ์”ฌ ๋” ๋งŽ์ด ์“ฐ๊ฒ ์ง€๋งŒ, ํ’€์ด ์ž์ฒด๋Š” ์•„์ฃผ ๊น”๋”ํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
  • 2018 KAKAO BLIND RECRUITMENT์˜ 1๋ฒˆ ๋ฌธ์ œ์ธ๋ฐ ์ •๋‹ต๋ฅ ์€ 91.85%์ด๊ณ , ์ฑ”ํผ๋‚˜์šด ์ˆ˜๋ผ๋Š” ์ˆ˜ํ•™ ์ƒ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค.

728x90