[공부] 261001 - 함수 1

강현구
∙∙조회 4

문제 번호: 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번 이상
  • 완벽히 이해하지 못함
  • 피곤해서 많이 풀지 못함