WalkerJei's Lifelog

백준알고리즘 2675번 문자열 반복 C# 본문

소프트웨어 개발/코딩테스트(기성 문제)

백준알고리즘 2675번 문자열 반복 C#

WalkerJei 2025. 3. 13. 09:42

세부 정보

  • 사이트: 백준알고리즘
  • 번호: 2675
  • 문제명: 문자열 반복
  • 언어: C#
  • 분류: 구현, 문자열
  • 비고: 

 

문제

문자열 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를 출력한다.

 

풀이

문자열 추출 시 Substring()을 활용한다.

Substring(j, 1)에서 j는 문자열의 시작 지점을 의미하고 1은 시작 지점을 기준으로 문자열 1개를 추출한다는 의미이다.

위에서 1이 들어갈 자리에 0을 넣으면 아무것도 추출할 수 없으니 주의해야 한다.

// 테스트 케이스 개수를 입력한다
int testCaseCount = Convert.ToInt32(Console.ReadLine());
// 추출한 문자를 저장하는 곳
string qrChar;

// 테스트 케이스 개수만큼 반복
for(int i = 0; i < testCaseCount; i++)
{
    // 연속으로 출력할 횟수와 출력할 문자들 입력해 배열에 저장
    string[] testCase = Console.ReadLine().Split().ToArray();
    // 문자열 추출 과정
    for(int j = 0; j < testCase[1].Length; j++)
    {
        // 하나의 문자를 추출해 저장
        qrChar = testCase[1].Substring(j, 1);
        // 추출한 문자를 입력한 횟수만큼 반복 출력
        for (int k = 0; k < Convert.ToInt32(testCase[0]); k++)
            Console.Write(qrChar);
    }
    Console.WriteLine();
}

 

후기

어제 배운 내용을 응용해서 잘 적용한 문제였다. 반복문을 3중으로 사용했고, 입력과 출력이 번갈아 가면서 나오는 문제이기도 했다.최적화를 잘 해내는 게임 프로그래머가 1차적 목표인 만큼 불필요한 변수를 줄이고, 코드를 짧고 수정하기 쉽도록 만들어야 컴퓨팅 자원을 덜 사용할 수 있다. 다만 코딩테스트는 제한 시간이 있는지라 일단 풀고 시간이 남아야 최적화를 진행할 수 있다. 조금은 성장한 느낌이 든다.