이 게시글은 혼공학습단(혼공파) 13기의 2주차 과제를 포함하고있습니다.
1. if - elif 문을 활용한 구현
str_input = input("태어난 해를 입력해주세요> ")
birth_year = int(str_input)
if birth_year % 12 == 0:
print('원숭이 띠입니다.')
elif birth_year % 12 == 1:
print('닭 띠입니다.')
elif birth_year % 12 == 2:
print('개 띠입니다.')
elif birth_year % 12 == 3:
print('돼지 띠입니다.')
elif birth_year % 12 == 4:
print('쥐 띠입니다.')
elif birth_year % 12 == 5:
print('소 띠입니다.')
elif birth_year % 12 == 6:
print('호랑이 띠입니다.')
elif birth_year % 12 == 7:
print('토끼 띠입니다.')
elif birth_year % 12 == 8:
print('용 띠입니다.')
elif birth_year % 12 == 9:
print('뱀 띠입니다.')
elif birth_year % 12 == 10:
print('말 띠입니다.')
elif birth_year % 12 == 11:
print('양 띠입니다.')
설명
if-elif 구조는 조건을 순차적으로 평가하며, 첫 번째로 True가 되는 조건을 실행합니다. 조건의 흐름이 명확하여 로직을 이해하고 수정하기 쉽습니다.
장점
- 각 조건이 독립적으로 작성되어 논리적 흐름이 분명합니다.
- 조건을 추가하거나 수정하기 용이합니다.
단점
- 조건문이 많아질수록 코드가 길어지고 유지보수가 어려워질 수 있습니다.
- 조건이 많아지면 성능 면에서 비효율적일 수 있습니다.
2. 리스트를 활용한 구현
str_input = input("태어난 해를 입력해주세요> ")
birth_year = int(str_input)
animals = [
'원숭이', '닭', '개', '돼지',
'쥐', '소', '범', '토끼',
'용', '뱀', '말', '양'
]
animal = animals[birth_year % 12]
print(f'{animal} 띠입니다.')
설명
리스트를 사용하면 태어난 해 % 12 값을 인덱스로 활용하여 동물 이름을 바로 조회할 수 있습니다. 조건문을 반복적으로 작성하지 않아도 되므로 코드가 간결하고 효율적입니다.
장점
- 코드가 간단하며, 조건을 인덱스 기반으로 처리하기 때문에 가독성이 높습니다.
- 조건과 결과가 고정된 규칙을 따를 경우 효율적으로 사용할 수 있습니다.
단점
- 연속적이지 않은 조건을 처리하기에는 적합하지 않습니다.
- 리스트 인덱스 범위를 벗어난 경우 예외가 발생할 수 있으므로 주의가 필요합니다.
3. 딕셔너리를 활용한 구현
str_input = input("태어난 해를 입력해주세요> ")
birth_year = int(str_input)
animal_dict = {
0: '원숭이',
1: '닭',
2: '개',
3: '돼지',
4: '쥐',
5: '소',
6: '범',
7: '토끼',
8: '용',
9: '뱀',
10: '말',
11: '양'
}
animal = animal_dict[birth_year % 12]
print(f'{animal} 띠입니다.')
설명
딕셔너리는 키-값 쌍으로 구성된 자료구조로, 특정 키에 해당하는 값을 빠르게 검색할 수 있습니다. 조건과 결과가 명확히 매핑되어야 하는 경우 딕셔너리를 사용하면 효율적입니다.
장점
- 조건과 결과를 명확히 매핑할 수 있어 가독성이 뛰어납니다.
- 특정 키를 빠르게 검색할 수 있어 성능이 우수합니다.
단점
- 데이터 초기화가 필요하며, 조건이 동적이거나 복잡한 경우에는 적합하지 않을 수 있습니다.
4. 세 가지 방식 비교
방식 | 장점 | 단점 |
if-elif | 단순하고 직관적 | 조건이 많아질수록 코드 길이가 길어지고 유지보수가 어려울 수 있음 |
리스트 | 간결하고 규칙적인 조건 처리에 적합 | 연속적이지 않은 조건을 처리하기에는 부적합, 범위 초과 주의 필요 |
딕셔너리 | 조건과 결과를 명확히 매핑할 수 있고 확장성이 높음 | 초기 데이터 구성 필요, 동적 조건 처리에 적합하지 않음 |
5. 어떤 방법을 선택할까?
- if-elif: 조건이 적고 논리적인 흐름을 순차적으로 표현해야 하는 경우.
- 리스트: 조건이 숫자 인덱스를 기반으로 규칙적이고 간단한 경우.
- 딕셔너리: 조건과 결과가 명확히 매핑되는 경우. 특히 대량의 데이터 검색이 필요한 경우.
728x90
'혼공학습단 > 혼공파' 카테고리의 다른 글
Python의 매개변수와 기본 매개변수, 가변 매개변수 이해하기 (0) | 2025.02.09 |
---|---|
[혼공파] Python 자료형: 리스트, 딕셔너리, 범위형 자료형 (0) | 2025.01.25 |
[혼공파] print 함수 톺아보기 (0) | 2025.01.08 |