https://school.programmers.co.kr/learn/courses/30/lessons/17687

 

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

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

programmers.co.kr

 

 

 

 

 

2018 KAKAO BLIND RECRUITMENT 3์ฐจ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ์ด๋‹ค. https://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/ ์„ ๋ณด๋ฉด ์ •๋‹ต๋ฅ ์ด 91.85% ๋ผ๊ณ  ํ•œ๋‹ค.

 

 

 

 

 

๋ฌธ์ œ

  • ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • ๊ทœ์น™ 1) ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ฐจ๋ก€๋Œ€๋กœ ๋งํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 0, ๋‘ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 1, โ€ฆ ์—ด ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 9๋ฅผ ๋งํ•œ๋‹ค.
    • ๊ทœ์น™ 2) 10 ์ด์ƒ์˜ ์ˆซ์ž๋ถ€ํ„ฐ๋Š” ํ•œ ์ž๋ฆฌ์”ฉ ๋Š์–ด์„œ ๋งํ•œ๋‹ค. ์ฆ‰ ์—ดํ•œ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ 10์˜ ์ฒซ ์ž๋ฆฌ์ธ 1, ์—ด๋‘ ๋ฒˆ์งธ ์‚ฌ๋žŒ์€ ๋‘˜์งธ ์ž๋ฆฌ์ธ 0์„ ๋งํ•œ๋‹ค.
      • ex) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, ...
  • ์ด์ง„๋ฒ•์—์„œ ์‹ญ์œก์ง„๋ฒ•๊นŒ์ง€ ๋ชจ๋“  ์ง„๋ฒ•์œผ๋กœ ๊ฒŒ์ž„์„ ์ง„ํ–‰
  • ์ง„๋ฒ• n, ๋ฏธ๋ฆฌ ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜ t, ๊ฒŒ์ž„์— ์ฐธ๊ฐ€ํ•˜๋Š” ์ธ์› m, ํŠœ๋ธŒ์˜ ์ˆœ์„œ p ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
    • 2 โ‰ฆ n โ‰ฆ 16
    • 0 ๏ผœ t โ‰ฆ 1000
    • 2 โ‰ฆ m โ‰ฆ 100
    • 1 โ‰ฆ p โ‰ฆ m
  • ๋งํ•ด์•ผ ํ•˜๋Š” ์ˆซ์ž t๊ฐœ๋ฅผ ๊ณต๋ฐฑ ์—†์ด ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜ํƒ€๋‚ธ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ
    • ๋‹จ, 10~15๋Š” ๊ฐ๊ฐ ๋Œ€๋ฌธ์ž A~F๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

ํ’€์ด

  • ํ•„์š”ํ•œ ์ˆซ์ž๋งŒํผ ์ง„๋ฒ•์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•ด ์ด์–ด๋ถ™์—ฌ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค
    • ํ•„์š”ํ•œ ์ˆซ์ž๋Š” ์ตœ๋Œ€ m(๊ฒŒ์ž„์— ์ฐธ๊ฐ€ํ•˜๋Š” ์ธ์›) * t(๋ฏธ๋ฆฌ ๊ตฌํ•  ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜)์ด๋‹ค.

 

  • n์ง„๋ฒ• ๋ณ€ํ™˜
    • char ๋ฐฐ์—ด๋กœ ๊ฐ ์ˆซ์ž(0~15)๋ณ„ ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ ์ •์˜
    • ๋ชซ์ด n-1์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ n์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ
      • ๋‚˜๋จธ์ง€(0 ~ n-1) ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ๋ฌธ์ž๋ฅผ ๋ถ™์ž„
      • ๋‚˜๋ˆ„๊ธฐ๊ฐ€ ๋๋‚˜๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชซ ๊ฐ’์— ํ•ด๋‹น๋˜๋Š” ๋ฌธ์ž๋ฅผ ๋ถ™์ž„
    • ๊ฑฐ๊พธ๋กœ ํ•œ ๊ฐ’์ด ๋ณ€ํ™˜๋œ ๊ฐ’

 

  •  p-1 ๋ถ€ํ„ฐ(์ˆซ์ž๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘์ด๋‹ˆ๊นŒ) m*t๊นŒ์ง€ m์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํŠœ๋ธŒ์˜ ์ˆœ์„œ ๋ฌธ์ž ๊ฒฐ๊ณผ๊ฐ’์— ์ด์–ด๋ถ™์ด๊ธฐ

 

  • ๋ฌธ์ž์—ด ๋งŒ๋“ค ๋•Œ, StringBuilder์˜ append๋กœ ์ด์–ด๋ถ™์—ฌ์•ผ ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค.

 

 

 

 

๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์ธ๋ฐ.. ์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค!

Integer.toString(์ˆซ์ž, ์ง„๋ฒ•);

 

 

 

 

 

์ฝ”๋“œ

import java.util.*;

class Solution {
    static char[] code = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    
    public String solution(int n, int t, int m, int p) {
        StringBuilder wholeStr = new StringBuilder(); //๋งํ•  ๋ฌธ์ž์—ด ์ „์ฒด
        
        for(int i = 0; i < m * t; i++) { //๊ฒŒ์ž„๋™์•ˆ ๋‚˜์˜ฌ ๋งํ•  ์ˆซ์ž ๊ตฌํ•˜๊ธฐ
            wholeStr.append(makeNumStr(n, i)); //1. ๋ชซ, ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ํ™œ์šฉ
            // wholeStr.append(Integer.toString(i, n).toUpperCase()); //2. ์ž๋ฐ” ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
        }
        
        StringBuilder answer = new StringBuilder(); //์ •๋‹ต
        
        for(int i = p - 1; i < m * t; i += m) { //ํŠœ๋ธŒ๊ฐ€ ๋งํ•  ๋ฌธ์ž ๊ตฌํ•˜๊ธฐ
            answer.append(wholeStr.charAt(i));
        }
        
        return answer.toString();
    }
    
    public String makeNumStr(int n, int i) {
        StringBuilder numStr = new StringBuilder();
        
        int q = i; //๋ชซ
        while(q >= n) { //๋ชซ์ด n ์ดํ•˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€
            int r = q % n; //๋‚˜๋จธ์ง€ ๊ตฌํ•จ
            q /= n; //๋ชซ ๊ฐฑ์‹ 
            numStr.append(code[r]);
        }
        numStr.append(code[q]);
        
        return numStr.reverse().toString();
    }
}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

๋ฐฐ์šด์ 

  • StringBuilder ๊ฑฐ๊พธ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ : reverse()
  • StringBuilder์„ String ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ : toString()
  • n์ง„๋ฒ• ๋ณ€ํ™˜ : Integer.toString(์ˆซ์ž, ์ง„๋ฒ•) : toUpperCase()
giraffe_