https://school.programmers.co.kr/learn/courses/30/lessons/17687
코드
function solution(n, t, m, p) {
let answer = '';
let sequence = ""
let num = 0;
while(sequence.length < t*m){
const convertedNum = num.toString(n).toUpperCase();
sequence += convertedNum;
num++;
}
for(let i=0 ; i < t ; i++){
answer += sequence[i*m+p-1];
}
return answer;
}
1. `sequence`라는 문자열에 0부터 n진법으로 변환한 문자열을 쭉 이어붙인다. 이 동작은 `sequence`의 길이가 `t*m` 이상이 될 때까지 반복한다.
2. `sequence`를 m개의 원소를 가진 덩어리들로 나눴을 때, p-1번째(제로 인덱스 기준)에 있는 원소들만 뽑아서 `answer`에 문자열로 저장하면 된다. 그걸 코드로 구현하면 11~14번째 줄과 같다.
여기서 5~9에 있는 작업은 배열의 메서드인 `reduce`로 변경할 수도 있다. 다만 이렇게 하려면 num이 몇까지 갈 지 미리 설정해두어야 하는데, 정확한 값을 알기는 어려워서 그냥 큰 값으로 넣어두고 `reduce`를 사용한 풀이도 있었다. 그렇지만 이건 메모리 측면에서 너무 비효율적이라고 생각해서 이렇게 하지는 않았다.
'문제풀이 > 완전탐색' 카테고리의 다른 글
[Python/파이썬] 백준 9763번 마을의 친밀도 (0) | 2025.04.16 |
---|---|
[Python/파이썬] 백준 2659번 십자카드 문제 (0) | 2025.02.27 |
[Python/파이썬] 백준 1120번 문자열 (0) | 2025.01.08 |
[Javascript/자바스크립트] 백준 17968번 Fire on Field (0) | 2024.07.11 |
[Python/파이썬] SW Expert Academy 20731번 서로소 그리드 (1) | 2024.06.12 |