2675번 - 문자열 반복 - push(), pop(), unshift(), shift() 함수

2022. 11. 19. 22:43BaekJoon/코드정리

문제

문자열 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

 

Array.prototype.shift() - JavaScript | MDN

shift() 메서드는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다. 이 메서드는 배열의 길이를 변하게 합니다.

developer.mozilla.org

 

그럼 부가적으로 

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

 

[javascript] 배열(array) 의 push(), pop(), unshift(), shift() 함수 사용하는 방법

[javascript] 배열(array) 의 push(), pop(), unshift(), shift() 함수 사용하는 방법 자바스크립트 배열에서 값을 추가하거나 제거하는 함수로 .push() .pop() .unshift() .shift() 가 있다. 배열에 값을 추가하는 함수 .p

electronic-moongchi.tistory.com

 

다음에도 이 네개의 함수를 잘 사용해 보는걸로! ㅎㅎ