✅ 문제 1. 마지막 두 수를 비교하여 새 값 추가
● 최초 시도
처음에는 조건에 맞는 값을 계산하기보다, arr[i] == queries[1] 형태로 값을 직접 비교해서 교체하는 식으로 작성했고, 배열을 새로 만들 때도 new_list라는 존재하지 않는 변수명을 사용했다.
int[] answer = new_list[num_list.Length + 1]; // ❌ "new_list" 라는 변수 정의 없음
● 감정 단계
int second = num_list[num_list.Length - 2];
int last = num_list[num_list.Length - 1];
int[] answer = new int[num_list.Length + 1];
for (int i = 0; i < num_list.Length; i++)
{
answer[i] = num_list[i];
}
answer[num_list.Length] = (last > second) ? last - second : last * 2;
● 반추 또는 오류 패턴
- 존재하지 않는 변수 사용 (new_list)
- 값 비교 및 배열 추가 방식이 잘못됨
✅ 문제 2. 문자열 입력으로 수 조작
● 최초 시도
초기에는 control[i] == "w"와 같이 문자열로 비교해 오류가 발생했다. 문자열이 아니라 문자형(char)으로 비교해야 한다는 C#의 문법 차이를 인지하지 못함.
if (control[i] == "w") // ❌ "char" vs "string" 비교
● 감정 단계
if (control[i] == 'w') n += 1;
else if (control[i] == 's') n -= 1;
else if (control[i] == 'd') n += 10;
else n -= 10;
● 반추 또는 오류 패턴
- 문자열과 문자형의 혼용으로 인한 컴파일 오류
✅ 문제 3. numLog 값으로 명령 발사 복원
● 최초 시도
초기 코드에서는 i = 0부터 시작했기 때문에 i-1에 접근하는 순간 IndexOutOfRangeException이 발생했다. 이전 값을 참조하려면 i = 1부터 순회해야 한다는 기본 개념을 놓침.
for (int i = 0; i < numLog.Length; i++)
{
if (numLog[i] == numLog[i - 1] + 1) // ❌ i == 0일 때 i-1 추적으로 발생
● 감정 단계
for (int i = 1; i < numLog.Length; i++)
{
if (numLog[i] == numLog[i - 1] + 1) answer += "w";
else if (numLog[i] == numLog[i - 1] - 1) answer += "s";
else if (numLog[i] == numLog[i - 1] + 10) answer += "d";
else answer += "a";
}
● 반추 또는 오류 패턴
- 인덱스 오류: i-1 사용 시 반드시 i=1부터 시작할 것
✅ 문제 4. arr에서 쿼리 [i, j] 값으로 swap
● 최초 시도
초기에는 queries를 queries[1], queries[2]처럼 1차원 배열처럼 접근했다. 그러나 C#의 2차원 배열에서는 [i, 0], [i, 1] 형식으로 접근해야 하는 걸 놓쳐 오류가 발생했다.
if (arr[i] == queries[1]) // ❌ 2차원 배열 접근 못함
● 감정 단계
for (int i = 0; i < queries.GetLength(0); i++)
{
int a = queries[i, 0];
int b = queries[i, 1];
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
● 반추 또는 오류 패턴
- 2차원 배열 접근 방식 착오로 인해 런타임 오류 발생
✅ 문제 5. [s, e, k] 문제: 공간 내 최소 값 탐색
● 최초 시도
초기에는 min 값을 설정하지 않고 조건 만족 여부에 따라 직접 answer에 값을 넣으려고 했으나, 만족하지 못하는 경우 -1 처리를 하지 못하고 실패. 또한 가장 작은 값을 비교할 기준이 없어 항상 잘못된 값이 저장됨.
● 감정 단계
int min = int.MaxValue;
bool found = false;
for (int i = s; i <= e; i++)
{
if (arr[i] > k && arr[i] < min)
{
min = arr[i];
found = true;
}
}
answer[q] = found ? min : -1;
● 반추 또는 오류 패턴
- int.MaxValue로 비교 기준값을 명확히 설정하지 않아서 매번 엉뚱한 값이 최솟값으로 저장됨
- found 플래그 없이 무조건 min을 answer에 할당해버리는 오류
후기
- 오늘 풀었던 문제 대부분이 "단순한 배열 처리"를 넘어서서, 인덱스를 명확히 이해하고 활용하는 능력이 중요했다.
- 특히 "쿼리" 문제는 "무엇을 바꿔라"는 명령이므로, 값 비교가 아니라 위치 비교라는 점을 계속해서 상기해야 했다.
- 중간중간 문법 실수(문자/문자열, 배열 인덱스 등)가 있었지만, 그때마다 수정 과정을 겪으며 구조적 이해가 더 깊어졌다.
'팀스파르타 코딩' 카테고리의 다른 글
| 📅 2025.06.07 / 오늘의 코테(2일차) – 감살리기 복습 2일차!! (0) | 2025.06.07 |
|---|---|
| 📅 2025.06.06 /오늘의 코테(오전)! - 복습!! (1) | 2025.06.06 |
| 📚 TIL - 2025년 05월 03일 (토) / 코드 구조화와 실전 예제 분석 (0) | 2025.05.03 |
| 📚 TIL - 2025년 4월 28일 (월) / 텍스트 RPG 발표 & 피드백 회고 (0) | 2025.04.28 |
| 📚 TIL - 2025년 4월 24일 (목) / C# 기초 개념 테스트 복기 (0) | 2025.04.24 |