팀스파르타 코딩

📅 2025.06.09 / 오늘의 코테 (3일차) - 감살리기 복습 3일차!!

creator2041 2025. 6. 9. 19:23

7일간 조별과제로 무너진 루틴을 다시 복원하기 위해 시작한 일일 복습!
오늘은 3일차로, 총 다섯 문제를 풀며 감을 되찾고 있다.
각 문제마다 내가 처음 작성한 코드와, GPT 튜터에게 받은 코드 리뷰를 통해 개선 방향을 확인했다.


문제 1. 두 정수 a, b를 붙여 "a + b = c" 형식으로 출력

문제 설명

두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성하시오.

a + b = c

내 코드

public static void Main()
{
    String[] s;
    s = Console.ReadLine().Split(' ');

    int a = Int32.Parse(s[0]);
    int b = Int32.Parse(s[1]);

    Console.WriteLine($"{s[0]} + {s[1]} = {a + b}");
}

GPT 코드 리뷰

  • 기능적으로는 잘 작동함.
  • 출력 형식의 정확성이 중요하므로, a와 b도 정수형 변수를 그대로 사용해 출력해도 좋음.

문제 2. 두 문자열을 공백 없이 이어 붙이기

문제 설명

두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어질 때, 이를 이어붙인 문자열을 출력하시오.

내 코드

public static void Main()
{
    String[] input;
    input = Console.ReadLine().Split(' ');

    String s1 = input[0];
    String s2 = input[1];

    Console.WriteLine(s1 + s2);
}

GPT 코드 리뷰

  • 기능, 처리 모두 정확.
  • 문자열 연결을 잘 구현했으며, 가독성도 좋음.

문제 3. 문자열을 시계 방향으로 90도 회전 출력

문제 설명

문자열 str이 주어질 때, 각 문자를 세로로 한 줄씩 출력하시오.

최초 코드 (오류 발생)

char[] zip = new list[s.Length]; // 잘못된 문법
for( int j = 0; j < zip.Length; i ++) // 변수명 불일치 및 증감 변수 오타

원인 및 해결

  • new list[s.Length]는 문법 오류이며 new char[s.Length]로 고쳐야 함.
  • 반복문에서 변수명 j를 사용하고 i++로 증가시킨 것도 논리 오류.
  • Console.WriteLine(zip[j]) 구문은 올바르게 사용됨.

최종 코드

public static void Main()
{
    string s = Console.ReadLine();
    char[] zip = new char[s.Length];

    for (int i = 0; i < s.Length; i++)
    {
        zip[i] = s[i];
    }

    for (int j = 0; j < zip.Length; j++)
    {
        Console.WriteLine(zip[j]);
    }
}

평가

  • 기초적인 반복문 오류를 수정하며 기초 감각 회복에 도움되었음.

문제 4. 짝수/홀수 판별

문제 설명

자연수 n이 주어졌을 때 짝수면 "n is even", 홀수면 "n is odd"를 출력하시오.

내 코드

public static void Main()
{
    String[] s = Console.ReadLine().Split(' ');
    int a = Int32.Parse(s[0]);

    if (a % 2 == 0)
    {
        Console.WriteLine($"{a} is even");
    }
    else
    {
        Console.WriteLine($"{a} is odd");
    }
}

GPT 코드 리뷰

  • 출력 형식, 조건 분기 모두 정확.
  • 기초 문제지만 실수를 하지 않은 점이 긍정적.

문제 5. 문자열 덮어쓰기

문제 설명

문자열 my_string, overwrite_string과 정수 s가 주어졌을 때,
my_string의 인덱스 s부터 overwrite_string의 길이만큼을 overwrite_string으로 바꾼 결과 문자열을 반환하시오.

최초 시도 (실패)

string newname = "";
for(int i = 0; i < s; i++)
{
    newname[i] = my_string[i]; // 문자열은 인덱스로 수정 불가
}

원인

  • 문자열은 불변(immutable)이라 인덱스를 통한 수정이 불가능함.
  • Substring을 이용한 덧붙이기 방식이 필요함.

최종 코드

public string solution(string my_string, string overwrite_string, int s)
{
    string front = my_string.Substring(0, s);
    string middle = overwrite_string;
    string back = my_string.Substring(s + overwrite_string.Length);

    return front + middle + back;
}

평가

  • 문자열 연산의 기초 개념(불변성)을 재확인함.
  • Substring으로 전후 분리 후 병합하는 방식은 매우 안정적이다.

🧠 오늘의 회고

  • 첫날과 둘째 날보다 코드의 구조와 분기 조건 작성이 훨씬 자연스러워졌음을 느낀다.
  • 여전히 문자열 조작에서 += 또는 인덱스 수정 같은 실수는 반복될 수 있으니 유의할 것.
  • 각 문제마다 GPT에게 코드 리뷰를 받으며 틀린 원인을 구체적으로 확인한 것이 큰 도움이 되었다.

내일은 조건문 + 반복문을 혼합한 문제, 혹은 간단한 배열 조작 문제로 넘어가보자!