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에게 코드 리뷰를 받으며 틀린 원인을 구체적으로 확인한 것이 큰 도움이 되었다.
내일은 조건문 + 반복문을 혼합한 문제, 혹은 간단한 배열 조작 문제로 넘어가보자!
'팀스파르타 코딩' 카테고리의 다른 글
| 📅 2025.06.07 / 오늘의 코테(2일차) – 감살리기 복습 2일차!! (0) | 2025.06.07 |
|---|---|
| 📅 2025.06.06 /오늘의 코테(오전)! - 복습!! (1) | 2025.06.06 |
| 📝 [TIL] 2025-06-05 (목) - 다시 코딩테스트 (0) | 2025.06.05 |
| 📚 TIL - 2025년 05월 03일 (토) / 코드 구조화와 실전 예제 분석 (0) | 2025.05.03 |
| 📚 TIL - 2025년 4월 28일 (월) / 텍스트 RPG 발표 & 피드백 회고 (0) | 2025.04.28 |