이 글에서는 백준 25501번 '재귀의 귀재' 문제를 분석합니다. 팰린드롬 여부를 재귀적으로 판별하고, 재귀 호출 횟수를 직접 세어보는 과정을 C++과 Python 코드로 상세히 설명합니다. 초보자도 쉽게 따라올 수 있도록 재귀의 개념부터 구현 방법까지 다루며, 실전 코딩 테스트 활용 팁도 함께 제공합니다.
이 문제는 은행의 ATM을 통한 예금과 출금 거래를 시뮬레이션하면서, 과도한 출금으로 인해 잔액이 –200 이하로 떨어지지 않도록 규칙을 적용해 거래 결과를 출력하는 시뮬레이션 문제입니다. 각 입력 거래를 차례대로 처리해서 잔액 변화 및 제한 조건에 따라 올바른 결과를 출력해야 하며 입력의 종료 조건과 형식에 유의해야 합니다.
백준 5544번 리그 순위 계산 문제는 모든 팀 간 경기 결과에 따라 각 팀의 승점을 계산한 뒤 동점 처리와 순위 조정 규칙에 따라 최종 리그 순위를 결정하는 구현/정렬 문제입니다. 입출력 처리, 승점 집계, 동순위 판별, 순위 지정, 결과 출력 등 다양한 구현 요소가 결합되어 있습니다.
백준 7523번 Gauß 다국어 문제는 두 정수 n과 m 사이 모든 정수의 합을 구하는 문제로, 단순 반복 대신 가우스 공식 – 연속 정수의 합 공식을 적용해 O(1) 시간에 합을 구하는 효율적 수학적 접근법을 요구합니다. 입력 범위가 크므로 오버플로우에 주의해 long long 등의 자료형 사용이 필요합니다.
백준 11689번 GCD(n, k) = 1 문제는 주어진 자연수 n에 대해 1 ≤ k ≤ n 범위 내에서 n과 서로소인 자연수 k의 개수를 구하는 수론 문제입니다. 효율적으로 오일러 피 함수(Euler's Totient Function)를 활용해 풀 수 있으며, 대수적 수식과 소인수분해 알고리즘을 적용하는 것이 핵심입니다.
백준 3830번 문제는 서로 다른 샘플 간의 무게 차이를 빠르게 처리하고 질의에 답해야 하는 Union-Find(Disjoint Set Union) 알고리즘 응용 문제입니다. 각 샘플쌍의 상대적 무게 정보를 축적하며, Path Compression과 가중치 누적 로직을 활용해 효율적으로 연산합니다.