<aside> 💬 lv0, 타입 확인

타입 확인

문제 설명

여러 클래스 이름과 이 이름의 인스턴스가 주어집니다. 각 인스턴스가 특정 클래스의 인스턴스인지 확인하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (클래스 및 인스턴스) 출력 (타입 및 서브클래스 확인 결과)
[('list', [1, 2, 3]), ('int', 4), ('str', 'hello')] True
[('str', 100), ('dict', {'a': 1}), ('tuple', (1, 2, 3))] False

입출력 설명

주어진 각 튜플에 대해, 첫 번째 요소는 클래스의 문자열 형태, 두 번째 요소는 인스턴스입니다. 각 튜플에 대해 두 번째 요소가 첫 번째 요소 문자열의 형태인지 확인하고, 결과를 True 또는 False로 반환합니다. 이렇게 반환한 요소가 모두 True이면 True를, 하나라도 False라면 False를 출력하는 코드를 작성해주세요. 예를 들어, ('list', [1, 2, 3]), ('int', 4), ('str', 'hello')는 True, True, True이기 때문에 True입니다.

</aside>

😺 풀이 1. 인스턴스의 타입 확인 메소드 사용

def solution(data):
		**#1 입력 데이터 순회 및 #2 인스턴스 타입 확인**
    **#3 결과 집계: 모든 결과가 True인지 확인**
    return all([type(instance).__name__ == class_ for class_, instance in data])

단계별 풀이 전략

  1. 입력 데이터 순회

    주어진 (클래스 이름, 인스턴스) 튜플 리스트를 순회합니다.

  2. 인스턴스 타입 확인

    순회하는 동안 각 인스턴스의 타입을 확인하고, 그 타입의 이름(__name__ 속성)이 주어진 클래스 이름 문자열과 일치하는지 검사합니다.

  3. 결과 집계

    모든 검사 결과를 all() 함수에 전달하여, 모두 True일 경우 최종적으로 True를, 그렇지 않으면 False를 반환합니다.

알아둬야 할 개념

type() 함수와 __name__ 속성

풀이 2. 루프와 조건문 사용

def solution(data):
    result = True **#1 결과 저장 변수 초기화**
    for class_name, instance in data:
        instance_type = type(instance).__name__
        if class_name != instance_type: **#2 인스턴스 타입 검사**
            result = False
            break **#3 불일치 발견 시 중단**
    return result **#4 결과 반환**

단계별 풀이 전략

  1. 결과 저장 변수 초기화

    변수 result를 선언하고, 초기값으로 True를 할당합니다. 이 변수는 모든 인스턴스의 타입 검사 결과를 저장하는 데 사용됩니다. 검사 과정에서 모든 인스턴스가 올바른 타입이면 result는 True를 유지하고, 그렇지 않은 경우 False로 변경됩니다.

  2. 인스턴스 타입 검사

    주어진 인스턴스 리스트를 순회하며 각 인스턴스의 타입을 검사합니다. 이 과정에서 type() 함수를 사용하여 각 인스턴스의 실제 타입을 확인하고, 이를 기대하는 타입(또는 클래스)과 비교합니다.

  3. 불일치 발견 시 중단

    타입 검사 중 첫 번째 불일치가 발견되면 반복을 즉시 중단하고 result 변수의 값을 False로 설정합니다. 이는 불필요한 반복을 방지하고 효율성을 높이는 데 도움이 됩니다.

  4. 결과 반환

    모든 인스턴스에 대한 타입 검사를 완료한 후, result 변수의 최종 값을 반환합니다. 모든 인스턴스의 타입이 올바른 경우 True를, 그렇지 않은 경우 False를 반환하여, 검사 결과를 명확하게 전달합니다.

알아둬야 할 개념