7일간 조별과제로 인해 깨져버린 루틴을 다시 회복하기 위해,
1일차 기초 문제부터 복습을 시작했다.
문제 자체는 단순하지만, 실수했던 부분을 직접 다시 짚어보며내가 정말 이해하고 있는지를 점검하는 데에 초점을 뒀다.
모든 문제는 내가 직접 작성한 코드를 그대로 남기고, 각 문제마다 GPT에게 리뷰를 받아 내용을 덧붙였다.
나중에 다시 보더라도 ‘왜 틀렸는지, 뭘 잘했는지’를 떠올릴 수 있도록 정리한다.
문제 1. 두 정수 a, b 계산식 출력
문제
두 정수 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}");
}
평가
- 입력 처리와 출력 형식 모두 완벽.
- 지문 그대로 출력 양식을 지킨 점이 매우 좋음.
✅ 완전 정답! 실수 없이 감 잘 살린 코드.
문제 2. 문자열 이어붙이기
문제
두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1과 str2를 이어서 출력하는 코드를 작성해 보세요.
내가 푼 코드
public static void Main()
{
String[] input;
input = Console.ReadLine().Split(' ');
String s1 = input[0];
String s2 = input[1];
Console.WriteLine(s1 + s2);
}
평가
- 단순하지만 명확하고 정확하게 작성됨
- 변수명도 직관적이고 문제 목적에 충실함
✅ 완전 정답! 간결한 구현이 돋보였음
문제 3. 문자열 세로 출력 (90도 회전)
문제
문자열 str이 주어집니다. 문자열을 시계방향으로 90도 돌려서 아래 예시처럼 출력하세요.
abc → 출력:
a
b
c
내가 푼 최초 코드 (오류 발생)
public static void Main()
{
string s;
s = Console.ReadLine();
char[] zip = new list[s.Length]; // ❌ list는 타입이 아님
for (int i = 0; i < s.Length; i++)
{
zip[i] = s[i];
}
for (int j = 0; j < zip.Length; i++) // ❌ i++가 아니라 j++ 필요
{
Console.WriteLine(zip[j]);
}
}
원인 및 해결법
- char[] zip = new list[...] → list는 C#의 타입이 아님. new char[...] 사용해야 함
- 두 번째 for문의 증감 변수 오타: i++ → j++
- char 배열을 굳이 만들지 않아도 문자열에서 바로 문자 접근 가능
최종 코드
public static void Main()
{
string s = Console.ReadLine();
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine(s[i]);
}
평가
- 구조를 먼저 짜려 한 점은 좋았음
- 사소한 문법 실수 두 가지가 결과를 막음 → 디버깅 연습에 좋았던 문제
문제 4. 홀짝 판별
문제
자연수 n이 입력으로 주어졌을 때,
n이 짝수면 "n is even", 홀수면 "n is odd"를 출력하세요.
내가 푼 코드
public static void Main()
{
String[] s;
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");
}
}
평가
- 조건문과 출력 모두 완벽
- 불필요하게 Split(' ') 사용한 점은 개선 여지 있음 (단일 숫자 입력이라면 ReadLine()만으로 충분)
✅ 거의 완벽한 정답! 문제 해석과 조건 처리 모두 정확
문제 5. 문자열 덮어쓰기
문제
문자열 my_string, overwrite_string, 정수 s가 주어질 때,
my_string의 인덱스 s부터 overwrite_string의 길이만큼 덮어쓴 문자열을 return 하세요.
내가 푼 최초 코드 (오류 발생)
public string solution(string my_string, string overwrite_string, int s)
{
string newname = "";
for(int i = 0; i < s; i++)
{
newname[i] = my_string[i]; // ❌ 문자열은 수정 불가
}
for(int j = s; s < j; j++) // ❌ 잘못된 반복 조건
{
newname[j] = overwirte_string[j]; // ❌ 오타 있음
}
return newname;
}
원인 및 해결법
- 문자열은 불변이라 newname[i] = 형태로 수정 불가
- overwrite_string 오타 존재
- 반복문 조건이 잘못되어 실행되지 않음
최종 코드
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);
string result = front + middle + back;
return result;
}
평가
- 최초 아이디어는 좋았고, 덮어쓰기 개념 정확히 이해함
- 문자열의 특성과 수정 방식에 대한 이해가 개선됨
✅ 최종 코드는 정석적인 접근법으로 완성도 높음
🧠 오늘의 회고 (2일차)
- 문자열은 불변이라는 개념을 다시금 확인함
- 반복문 조건 실수, 증감 변수 오타가 프로그램 흐름을 막을 수 있음을 체감함
- 입출력 형식과 요구 조건을 더 정확히 읽는 습관을 유지하자
내일은 조건문이 포함된 문자열 파싱 문제를 복습해보자!
'팀스파르타 코딩' 카테고리의 다른 글
| 📅 2025.06.09 / 오늘의 코테 (3일차) - 감살리기 복습 3일차!! (0) | 2025.06.09 |
|---|---|
| 📅 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 |