문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이여부: O
코드:
class Solution {
public String solution(int n, int t, int m, int p) {
String answer = "";
int number = 0;
int i = 0;
label : while (true) {
String str = logic(n, number);
for (int j = 0; j < str.length(); j++) {
if (i % m + 1 == p) {
answer += str.charAt(j);
}
if (answer.length() == t) {
break label;
}
i++;
}
number++;
}
return answer;
}
// n진법으로 정수 number을 표현할 때
public String logic(int n, int number) {
if(number == 0) return "0";
String str = "";
int val = number;
while (val != 0) {
int rest = val % n;
if (rest > 9) {
char c = (char) ('A' + (rest - 10));
str = c + str;
}else{
str = rest + str;
}
val /= n;
}
return str;
}
}
다른 사람 코드:
class Solution {
public String solution(int n, int t, int m, int p) {
String answer = "";
int startNum = 0;
String targetString = "";
String retString = "";
while (targetString.length() < t * m) { // 크기 m에 한 글자씩 뽑게되고 총 t개를 뽑아야 하니 t * m
targetString += Integer.toString(startNum++, n); // n 진법수를 targetString 에 붙힌다.
}
for (int i = 0; i < t; i++) {
retString += targetString.charAt(i * m + p - 1); // p - 1 : 1번째 > 0번째
}
answer = retString.toUpperCase();
return answer;
}
}
'PS > 프로그래머스' 카테고리의 다른 글
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 방금그곡[JAVA] (0) | 2023.10.24 |
---|---|
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 압축[JAVA] (1) | 2023.10.23 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 셔틀버스[JAVA] (1) | 2023.10.19 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 프렌즈4블록[JAVA] (0) | 2023.10.17 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 캐시[JAVA] (0) | 2023.10.16 |