https://school.programmers.co.kr/learn/courses/30/lessons/17687
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()
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์์ดํ ์ค๊ธฐ (0) | 2023.08.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์คํฌํธ๋ฆฌ (0) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ํธํ ๋์ค (0) | 2023.08.04 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ ๊ฐ๊ฒฉ (0) | 2023.08.03 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฏธ๋ก ํ์ถ (0) | 2023.08.02 |