본문 바로가기
백준

[백준] 4779번 : 칸토어 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 12. 15.
728x90
반응형

 

 

4779번: 칸토어 집합

칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고,

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 칸토어 집합을 만들기 위한 과정을 함수로 정의하면 def Func(N)
  3. 입력으로 들어온 수가 1이면 -를 반환하며 해당 과정을 멈춘다. if (N == 1): return '-'
  4. 수가 1이 아니면 해당 수를 3 등분하여 왼쪽, 가운데, 오른쪽 부분으로 나눈다.
  5. 왼쪽 부분은 다시 한번 해당 과정을 수행한다. left = Func(N // 3)
  6. 가운데 부분은 문자열을 공백으로 바꾼다. center = ' ' * (N // 3)
  7. 오른쪽 부분도 다시 한번 해당 과정을 수행한다. right = Func(N // 3)
  8. 왼쪽, 가운데, 오른쪽 부분의 각 문자열을 하나의 문자열로 합쳐 반환해 준다. return left + center + right
  9. 파일의 끝에서 입력을 멈추기 위해 무한 반복문을 사용하고 while (True)
  10. 예외처리를 해주기 위해 try except 구문을 사용한다. try
  11. 정수를 입력받는다. N = int(sys.stdin.readline())
  12. 3의 해당 수 제곱을 인수로 하여 함수를 실행시키고 칸투어 집합을 만들어 결과를 저장한다. result = Func(3 ** N)
  13. 칸투어 집합을 출력한다. print(result)
  14. 파일의 끝이면 except
  15. 반복을 종료한다. break
반응형

3. 소스코드

import sys

def Func(N):
    if (N == 1):
        return '-'
    
    left = Func(N // 3)
    center = ' ' * (N // 3)
    right = Func(N // 3)
    return left + center + right

while (True):
    try:
        N = int(sys.stdin.readline())

        result = Func(3 ** N)
        print(result)
    except:
        break
728x90
반응형