[백준/C++/Python] 문자열 파트 정복: 아스키코드부터 알고리즘까지 핵심 요약
안녕하세요! 오늘은 백준 문자열 단계 문제를 풀며 정리한 핵심 개념들을 공유합니다. 파이썬의 간결함과 C++의 세밀한 제어를 동시에 공부하며 느낀 차이점과 정보처리기사 실기 시험에 나올만한 포인트들을 짚어봤습니다.
1. 문자와 숫자의 다리: 아스키코드 (ASCII)
컴퓨터는 문자를 숫자로 기억합니다. 이 원리를 이해하는 것이 문자열 공부의 시작입니다.
- 핵심 함수:
- Python: ord('A') → 65, chr(65) → 'A'
- C++: 별도 함수 없이 (int)'A'로 형 변환(Casting) 하거나, char 변수에 숫자를 직접 더하고 뺄 수 있습니다.
- 시험 대비 암기 포인트:
- 'A' = 65, 'a' = 97 (대소문자 차이는 32)
- '0' = 48 (문자 '0'을 숫자 0으로 만들려면 '0' - 48 혹은 s[i] - '0' 연산이 필요합니다.)
2. 문자열 뒤집기와 수학적 변환
백준의 '상수' 문제처럼 숫자를 뒤집어 비교할 때 유용한 테크닉입니다.
- Python: 슬라이싱 s[::-1]이나 "".join(reversed(s))를 사용하여 한 줄로 해결 가능합니다.
- C++ (수학적 방법): 정보처리기사 실기 단골 로직입니다.
-
C++
while (num > 0) { reverse = reverse * 10 + (num % 10); // 일의 자리 추출 후 자릿수 올림 num /= 10; // 원본 숫자 자릿수 내림 }
3. 공백이 포함된 문자열 입력 (EOF 처리)
단어의 개수를 세거나 그대로 출력하는 문제에서 가장 중요한 부분입니다.
- Python: sys.stdin.read().split()을 사용하면 모든 공백과 줄바꿈을 무시하고 단어만 리스트로 추출해 줍니다.
- C++:
- 단어 단위: while (cin >> s) (공백 기준 자동 분리)
- 한 줄 전체: getline(cin, s) (공백 포함 읽기)
- 주의: cin >> s는 첫 단어를 읽는 순간 스트림에서 소모되므로, 루프 조건문 안에서 직접 사용하는 것이 안전합니다.
4. 데이터 맵핑: 다이얼과 알파벳 찾기
특정 문자를 인덱스나 특정 값으로 치환하는 방법입니다.
- 배열 인덱스 활용: s[i] - 'a'를 하면 'a'는 0, 'b'는 1이 됩니다. 이를 이용해 크기 26짜리 배열에 알파벳 위치나 빈도를 기록할 수 있습니다.
- Switch-Case (C++): 여러 case를 묶어 처리할 때 break;의 위치가 중요합니다. 다이얼 문제처럼 여러 문자가 같은 결과값을 가질 때 유용합니다.
💡 정보처리기사 실기 대비 Tip
- Call by Reference: C++에서 함수 매개변수에 &를 붙이면(예: void func(int& a)) 원본 값이 수정됩니다.
- 포인터와 배열: 문자열은 결국 char 타입의 배열이며, 마지막에 반드시 **NULL 문자(\0)**가 들어있음을 잊지 마세요.
- 제어문: while문과 for문의 조건식이 언제 종료되는지 '디버깅 표'를 그려가며 추적하는 연습이 필수입니다.
마무리하며 파이썬은 라이브러리를 잘 쓰는 능력이 중요하고, C++은 메모리와 데이터의 흐름을 직접 제어하는 맛이 있네요. 4월 20일 정보처리기사 필기 시험까지 이 감각을 유지하며 꾸준히 달려보겠습니다! 🚀
'코딩테스트 > 백준' 카테고리의 다른 글
| [C/Python] 2차원 배열 (0) | 2026.03.04 |
|---|---|
| [C/Python] 심화1 (0) | 2026.03.04 |
| [C/Python] 1차원 배열 (0) | 2026.03.01 |
| [C/Python]반복문 (0) | 2026.02.26 |
| [C/Python] 조건문 (0) | 2026.02.25 |