포스트

TIL 2026-03-05

TIL 2026-03-05

3/5 - 코드카타/코드 정리/programmers

생성일: 2026년 3월 5일 오후 5:42

오늘 풀이 + README/CodeKata.md 정리 내용을 함께 기록

1) 두 수의 차

  • 핵심: 문제 요구 그대로 num1 - num2 반환
  • 포인트: 제한사항 범위는 입력 보장이라 별도 방어코드 불필요
1
2
3
int solution(int num1, int num2) {
    return num1 - num2;
}

2) 두 수의 곱

  • 핵심: num1 * num2를 그대로 반환
  • 포인트: 단순 연산 문제는 불필요 변수(answer) 없이 바로 return 가능
1
2
3
int solution(int num1, int num2) {
    return num1 * num2;
}

3) 등차수열/등비수열 다음 항

  • 판별 기준: 앞 3개로 등차 여부 확인 (차가 같으면 등차)
  • 등차: 마지막 + 공차 / 등비: 마지막 * 공비
  • 복잡도: O(1) (고정 개수 원소만 확인)
1
2
3
4
5
6
7
8
9
int solution(vector<int> common) {
    if ((common[1] - common[0]) == (common[2] - common[1])) {
        int d = common[1] - common[0];
        return common.back() + d;
    } else {
        int r = common[1] / common[0];
        return common.back() * r;
    }
}

4) CodeKata.md / README 링크 정리 포인트

  • GitHub Markdown 상대경로는 \ 가 아니라 / 사용
  • CodeKata.md가 3월/ 폴더에 있으면 링크는 ../CodeingTest/… 형태로 작성
  • 표 문법은 헤더/구분선 포함해서 작성해야 렌더 안정적
1
2
3
| 날짜 | 문제 | 링크 |
|---|---|---|
| 2026-03-05 | 두 수의 차 | [정리보기](../CodeingTest/CodingTest/CodeKata/CodeKata_01.cpp) |

5) 오늘 회고

  • 문제 자체보다 제출 포맷(raw code, 링크 경로)에서 시행착오가 많았음
  • 앞으로는 풀이 후 README 링크까지 즉시 검증하는 루틴으로 고정

수정 보강하면 좋을점

  • CodeKata.md 링크 전체 클릭 테스트 후 깨진 링크 수정
  • 수열 문제 3개 추가 풀이 (등차/등비 판별 로직 자동화)
  • 기본 수학/구현 문제는 “바로 return” 패턴으로 불필요 코드 줄이기

프로그래머스 ) 연속된 수의 합

부족했던 점

  • 문제를 등차수열 합으로 바로 변환하기보다, 나눠떨어짐/안떨어짐 케이스 분기로 먼저 접근해서 복잡도가 올라감.
  • 루프 내부 변수(count) 갱신 흐름이 불명확해져 시작값 추적이 어려웠음.
  • 공식을 떠올렸지만, 식으로 고정해 단일 로직으로 정리하는 단계가 늦었음.

개선점

  • 문제 해석 직후 “필요한 값은 첫 항(start) 1개”로 목표를 축소한다.
  • 분기 대신 단일 공식으로 처리해 구현 실수(조건 누락/중복 로직) 줄인다.
  • 검증 루틴을 고정한다: (짝수 num / 홀수 num / 음수 포함) 케이스를 최소 3개 대입 확인.

공식 분석

1
2
3
4
5
6
7
8
9
10
11
12
연속된 num개 수를
start, start+1, ..., start+(num-1)
라고 두면,

합 = num*start + num*(num-1)/2 = total

따라서
start = (total - num*(num-1)/2) / num

코드에서 자주 쓰는 동치 형태:
start = total/num - (num-1)/2
(이 문제는 항상 해가 존재한다고 보장)

결과 코드 (최종)

1
2
3
4
5
6
7
8
9
vector<int> solution(int num, int total) {
    vector<int> answer;
    int start = total / num - (num - 1) / 2;

    for (int i = 0; i < num; i++) {
        answer.push_back(start + i);
    }
    return answer;
}

복습 체크리스트

  • 등차수열 합 공식에서 start를 직접 유도해 종이에 1회 정리
  • 같은 패턴 문제 1개를 분기 없이 단일 식으로 구현
  • 루프 변수는 start+i 형태로 단순화하는 습관 유지
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.