2022. 11. 19. 22:43ㆍBaekJoon/코드정리
문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.
QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.
입력
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.
출력
각 테스트 케이스에 대해 P를 출력한다.
예제 입력 1 복사
2
3 ABC
5 /HTP
예제 출력 1 복사
AAABBBCCC
/////HHHHHTTTTTPPPPP
문제를 아는 방법대로 풀었긴하지만, 인터넷 검색으로 shift함수를 사용하게 되어 글을 남긴다.
기존에 내가 푼 답안은 아래와 같지만
// 문자열 반복
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split("\n");
const num = Number(input[0]);
let result = "";
for (let i = 1; i <= num; i++) {
let numA = Number(input[i].split(" ")[0]);
let numB = input[i].split(" ")[1];
for (let j = 0; j < numB.length; j++) {
for (let k = 0; k < numA; k++) {
result += numB[j];
}
}
result += "\n";
}
console.log(result);
shift를 사용해서 아래와 같이 풀이할 수 있다.
// 문자열 반복
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split("\n");
const num1 = input.shift();
for (let i = 0; i < num1; i++) {
let answer = "";
const [num2, str] = input[i].split(" ");
for (let j = 0; j < str.length; j++) {
for (let k = 0; k < num2; k++) {
answer += str[j];
}
}
console.log(answer);
}
이 shift 메서드는 다음과 같은 성질을 가지고 있다.
Array.prototype.shift()
shift() 메서드는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다. 이 메서드는 배열의 길이를 변하게 합니다.
shift한 배열을 가지고 오면,첫번째 인자를 빼서 반환하지만,
shift하여 정의한 변수는, 첫번째 인자를 반환하게 된다.
출처 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
그럼 부가적으로
push(), pop(), unshift(), shift() 함수도 배워보자.
배열에 값을 추가하는 함수
.push() : 배열의 맨 끝에 값을 추가한다.
.unshift() : 배열의 맨 앞에 값을 추가한다.
배열에 값을 제거하는 함수
.pop() : 배열의 맨 끝에 값을 제거한다.
.shift() : 배열의 맨 앞에 값을 제거한다.
예제를 통해 한번 더 확인해 보면
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
var arry1 = [ 'apple', 'banana', 'melon' ];
arry1.push( 'berry' );
document.write( '<p>push : ' + arry1.join( ' / ' ) + '</p>' );
var arry2 = [ 'apple', 'banana', 'melon' ];
arry2.pop();
document.write( '<p>pop : ' + arry2.join( ' / ' ) + '</p>' );
var arry3 = [ 'apple', 'banana', 'melon' ];
arry3.unshift( 'berry' );
document.write( '<p>unshift : ' + arry3.join( ' / ' ) + '</p>' );
var arry4 = [ 'apple', 'banana', 'melon' ];
arry4.shift();
document.write( '<p>shift : ' + arry4.join( ' / ' ) + '</p>' );
</script>
</body>
</html>
다음과 결과 값이 나오게 된다.
출처 : https://electronic-moongchi.tistory.com/67
다음에도 이 네개의 함수를 잘 사용해 보는걸로! ㅎㅎ
'BaekJoon > 코드정리' 카테고리의 다른 글
2941번 - 크로아티아 알파벳 - 정규식 사용 (1) | 2022.11.21 |
---|---|
2908번 - 상수 - reverse함수 (0) | 2022.11.21 |
chartAt(), 문자열[index] (0) | 2022.11.18 |
10809번 - 알파벳 찾기 - indexOf사용 (0) | 2022.11.18 |
11654번 : 아스키 코드 변환방법 (0) | 2022.11.18 |