[공부] 261001 - 함수 1
문제 번호: CH14_Q01 (요청 문자 및 행 수 출력)
csharp
using System;
Console.Write("첫 요청 문자: ");
char firstCall = char.Parse(Console.ReadLine());
Console.Write("첫 요청 행 수: ");
int firstColumn = int.Parse(Console.ReadLine());
Console.Write("두 번째 요청 문자: ");
char secondCall = char.Parse(Console.ReadLine());
Console.Write("두 번째 요청 행 수: ");
int secondColumn = int.Parse(Console.ReadLine());
string result = string.Empty;
PrintSteps(firstCall, firstColumn);
result = string.Empty;
PrintSteps(secondCall, secondColumn);
void PrintSteps(char symbol, int rows)
{
if(rows <= 0)
{
Console.WriteLine("출력 없음: ");
}
else
{
for(int i = 0; i < rows; i++)
{
result += symbol;
Console.WriteLine(result);
}
}
}
- 소요시간 - 20분
- AI 질문? - 함
어려웠던 이유?
char.Parse로 입력받아int매개변수에 넘겼을 때, 숫자가 아닌 문자의 아스키(ASCII) 코드 값(숫자 3 입력 시 51)이 적용되는 C# 타입 파싱 문제 발생.- 함수를 연속 호출할 때 전역 문자열 변수(
result)에 이전 데이터가 남아있는 문제.
어떻게 풀었나?
- 행 수 입력을
char.Parse에서int.Parse로 변경하여 아스키 코드 변환 오류 해결. - 두 번째 함수 호출 직전에
result = string.Empty;를 수행하여 출력 결과가 누적되지 않도록 초기화 처리.
남은 것
result같은 출력용 변수를 전역 변수로 두지 않고, 함수 내부의 지역 변수로 선언하여 함수 호출 간 독립성 확보하기.
알게된것
- 키보드로 입력받은 숫자 문자('3')를
char.Parse로 받아int로 변환하면 실제 정수 3이 아닌 아스키 코드 51이 된다. - 반복해서 문자를 이어붙이는 로직에서는 상태 변수의 초기화 시점이 중요하다.
오늘 평가: FF
- 20분 내로 풀지 못함
- AI한테 질문 횟수 4번 이상
- 완벽히 이해하지 못함
- 피곤해서 많이 풀지 못함



