https://www.acmicpc.net/problem/4779
4779번: 칸토어 집합
칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고,
www.acmicpc.net
재귀를 통해 해결할 수 있는 문제이다.
풀이 과정은 다음과 같다.
재귀 함수 cantor는 인자로 구간의 길이, 구간의 시작 위치, 출력할 문자의 종류를 전달받는다.
각 cantor 함수는 구간의 길이를 3등분 하여 시작, 중간, 끝 구간에서
인자를 그에 맞게 수정해 cantor 함수를 다시 호출한다.
이때 중간 구간에서는 공백 문자를, 나머지 구간에서는 기존 문자를 출력해야 한다.
배운 내용
위 문제는 입력값이 존재하는 한 계속해서 반복문을 수행해야 한다.
'입력값이 존재한다' 라는 조건을 어떻게 나타내는가?
C++에서 사용하는 입력용 객체 cin에 대해, cin >> n에서 입력값이 비정상일 경우 cin의 값이 false가 된다.
따라서 반복문의 문법을 while (cin >> n)와 같이 사용하면 된다.
'백준' 카테고리의 다른 글
백준 11724 - 연결 요소의 개수 (0) | 2023.05.20 |
---|---|
백준 - 그리디 알고리즘 (0) | 2023.05.20 |
백준 12865 - 평범한 배낭 (0) | 2023.05.15 |
백준 9251 - LCS (0) | 2023.05.14 |
백준 2565 - 전깃줄 (0) | 2023.05.13 |