본문 바로가기

코딩테스트/프로그래머스

[C] 코딩 기초 트레이닝 (21 ~ 40)

1. 문자열 조작 및 비교 (21~25번)

이 구간은 문자열을 합치거나 특정 규칙에 따라 변환하는 능력을 시험합니다.

  • 주요 문제: 문자 리스트를 문자열로 변환하기, 문자열 곱하기, 더 크게 합치기 등
  • 핵심 포인트:
    • strcat, strcpy를 사용할 때는 결과 문자열의 크기가 \0(널 문자)를 포함할 수 있을 만큼 충분한지 확인해야 합니다.
    • 더 크게 합치기: 두 숫자를 문자열로 변환(sprintf)한 뒤 붙여보고, 다시 숫자로 바꿔(atoi) 비교하는 방식이 직관적입니다.

2. 조건문에 따른 연산 (26~30번)

if-else 또는 switch문을 활용하여 비즈니스 로직을 구현하는 연습입니다.

  • 주요 문제: n의 배수, 공배수, flag에 따라 다른 값 반환하기 등
  • 핵심 포인트:
    • 공배수: number % n == 0 && number % m == 0과 같이 논리 연산자를 정확히 사용해야 합니다.
    • 홀짝 구분: % 2 연산자를 활용하여 조건 분기를 처리합니다.

3. 수열과 반복문 (31~35번)

반복문을 돌며 배열의 원소를 조작하거나 특정 조건의 합을 구하는 구간입니다.

  • 주요 문제: 원소들의 곱과 합, 이어 붙인 수, 마지막 두 원소 등
  • 핵심 포인트:
    • 원소들의 곱과 합: 모든 원소의 곱과 '합의 제곱'을 비교할 때, 곱셈 결과가 int 범위를 넘을 수 있다면 long long 타입을 고려하세요.
    • 마지막 두 원소: 배열의 인덱스 len-1, len-2를 활용하여 조건에 맞는 값을 추가로 할당합니다.

4. 리스트(배열) 조작하기 (36~40번)

배열의 특정 구간을 자르거나 조건에 맞는 원소만 골라내는 능력이 필요합니다.

  • 주요 문제: 수 조작하기 1, 수 조작하기 2, 수열과 구간 쿼리 등
  • 핵심 포인트:
    • 수 조작하기: w, a, s, d 입력에 따라 변수 n을 증감시킵니다.
    • 배열 자르기: malloc을 통해 필요한 만큼만 메모리를 할당하고, 반복문의 시작점과 끝점을 인자로 받은 start, end로 설정하여 복사합니다.