문자 반복 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/120825
문자열 my_string 과 정수 n 이 매개변수로 주어질 때 , my_string 에 들어있는 각 문자를 n 만큼 반복한 문자열 반환하는 문제이다.
내가 생각한 방법은 이렇다.
- my_string 을 foreach 를 사용해서 char 로 하나씩 꺼낸다.
- 반복문 ( while )을 사용해서 꺼낸 char 를 n 번 만큼 반복
- answer 에 대입한다.
- answer 를 반환한다.
using System;
public class Solution
{
public string solution(string my_string, int n)
{
string answer = "";
int count = 1;
foreach(char c in my_string)
{
while(count < n)
{
answer += c;
count++;
}
}
return answer;
}
}

여기서 틀린 부분이 있었는데, count 변수를 foreach 안에서 초기화하지 않아서 잘못된 값이 반환되었다.
count 가 h 를 처리하고 나서 n 에 도달하면, 다음 문자 e 로 넘어가도 count 가 이미 n 이라 while 문이 실행되지 않는 문제가 있었다.
count 를 foreach 밖에 선언하면 모든 문자가 같은 count 를 공유한다.
count = 1 로 시작
'h' 처리 → count가 n에 도달
'e' 처리 → count가 이미 n이라 while 실행 안됨
foreach 안에 선언하면 문자마다 새로운 count 가 생성된다.
'h' 처리 → count = 0으로 시작, n번 반복
'e' 처리 → count = 0으로 시작, n번 반복
▼ 수정된 풀이 코드
using System;
public class Solution
{
public string solution(string my_string, int n)
{
string answer = "";
foreach(char c in my_string)
{
int count = 0;
while(count < n)
{
answer += c;
count++;
}
}
return answer;
}
}
반복문 없이 반복된 문자열 만들기
다른 사람의 풀이 중 괜찮은 방법이 있어 정리하려고 한다.
using System;
public class Solution
{
public string solution(string my_string, int n)
{
string answer = "";
foreach (var c in my_string)
{
answer += new string(c, n);
}
return answer;
}
}
여기서 new string(c , n) 이 핵심이다.
new string('h', 3) // → "hhh"
char 와 반복 횟수를 넣으면 자동으로 반복된 문자열을 만들어준다.
그래서 while 문 없이 foreach 한 번으로 끝난다.
var 는 타입을 자동으로 추론해준다.
이전에 배운 적이 있었던거 같은데, 다음에는 이런 비슷한 문제가 나오면 활용 해봐야겠다.
'📖TIL > ✅CodingTest' 카테고리의 다른 글
| 문자 리스트를 문자열로 변환 (0) | 2026.05.29 |
|---|---|
| 숨어있는 숫자의 덧셈 (0) | 2026.05.16 |
| 문자열 패딩 ( Padding ) (0) | 2026.05.14 |
| 등차수열의 합 (0) | 2026.05.12 |
| 문자열 변환 없이 각 자릿수 분리 (0) | 2026.05.09 |