코딩도장 심사문제모음

35.5 연습문제: 날짜 클래스 만들기

codermun 2020. 11. 9. 22:53
728x90
반응형

다음 소스 코드에서 Date 클래스를 완성하세요. is_date_valid는 문자열이 올바른 날짜인지 검사하는 메서드입니다. 날짜에서 월은 12월까지 일은 31일까지 있어야 합니다.

 

풀이.1

인덱스 슬라이싱을 이용해 월, 일이 해당 범위 안에 들어오면 True를 반환한다.

여기서는 속성 및 인스턴스를 사용하지 않고, 결과만 구현하면 되고 클래스에 접근하지 않아도된다.

따라서 정적 메서드를 사용하였다.

## 정적 메서드에서는 if 사용후 else로 마무리 하지 않아도 정상동작 한다.

class Date:
    
    @staticmethod
    def is_date_valid(time):
        if 1 <= int(time[5:7]) <= 12 and 1 <= int(time[8:]) <= 31:
            return True

## time은 문자열로 입력이되고 if 조건문을 활용하기 위해 int로 변환해준다.

풀이.2 (코딩도장)

년, 월, 일 (변수)에 map, int, split('-')을 이용한다.

##여기서 중요한 포인트는 map 객체도 언패킹을 할 수 있다는 사실이다.##

각 변수에 년, 월, 일을 할당하였으므로 아래와 같이 출력도 가능하다.

class Date:
    
    @staticmethod
    def is_date_valid(time):
        year, month, day = map(int, time.split('-')) # 리스트나 튜플로 감싸주지 않았음
        print(year, month, day)

Date.is_date_valid('2000-01-20')
::
2000 1 20

 

if 문의 역할은 비교 연산자를 이용하여 return으로 반환하는 것으로 해결

class Date:
    
    @staticmethod
    def is_date_valid(time):
        year, month, day = map(int, time.split('-'))
        return 1 <= month <= 12 and 1 <= day <= 31 

728x90
반응형