1. 문자열 계산하기 & OX퀴즈 (파싱의 기초)
문자열로 된 수식을 계산하는 문제는 strtok 함수와 atoi 함수의 조합이 핵심입니다.
- 핵심 로직: 공백을 기준으로 항을 분리하고, 연산자(+, -)에 따라 state 변수를 조절하며 결과를 합산합니다.
- 복기 포인트: strtok은 원본 문자열을 수정하므로 strdup으로 복사본을 만들어 사용하는 습관이 중요합니다.
2. 최빈값 구하기 (카운팅 정렬 응용)
가장 많이 등장한 숫자를 찾는 최빈값 문제는 배열의 인덱스를 활용하는 것이 가장 빠릅니다.
- 핵심 로직: count[1000] 배열을 선언하고, 숫자가 나올 때마다 해당 인덱스의 값을 증가시킵니다. 이후 최댓값을 찾되, 중복 여부를 체크하여 -1을 반환하는 예외 처리가 관건입니다.
3. 특이한 정렬 (qsort 커스텀)
기준값 n과의 거리를 기준으로 정렬하는 문제입니다.
- 핵심 로직: C 표준 라이브러리의 qsort를 사용하되, 비교 함수(compare)를 커스텀합니다. 거리가 같을 때는 값이 더 큰 숫자가 앞에 오도록 valB - valA를 반환합니다.
- 주의사항: qsort는 추가 인자를 받지 못하므로 기준값 n은 전역 변수로 선언하여 공유합니다.
4. 다음에 올 숫자 (수열 판별)
등차수열과 등비수열을 판별하여 다음 항을 구하는 수학 문제입니다.
- 핵심 로직: common[1] - common[0] == common[2] - common[1] 조건으로 등차수열 여부를 먼저 확인합니다. 등차라면 마지막 항에 공차를 더하고, 아니라면 공비를 곱합니다.
5. 옹알이 (1) (패턴 매칭)
조카가 발음할 수 있는 4가지 단어의 조합을 찾는 문제입니다.
- 핵심 로직: strstr 함수로 유효한 발음을 찾아 **공백(" ")**으로 치환합니다. 단순히 삭제하면 앞뒤 글자가 붙어 새로운 단어가 생기는 오류가 발생하므로 반드시 공백 마킹을 활용해야 합니다.
- 포인터 배열: char* can[] = {"aya", "ye", "woo", "ma"};와 같이 포인터 배열을 사용하면 메모리 낭비 없이 효율적으로 상수 문자열을 관리할 수 있습니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [C] 코딩 기초 트레이닝 124제 (1 ~ 20) (0) | 2026.04.01 |
|---|---|
| [C] 프로그래머스 코딩 테스트 입문 (0) | 2026.04.01 |
| [C] 코딩 테스트 입문 100제 (72 ~ 83) (0) | 2026.03.30 |
| [C] 코딩 테스트 입문 100제 (61 ~ 71) (0) | 2026.03.27 |
| [C] 코딩 테스트 입문 100제 (40 ~ 60) (0) | 2026.03.26 |