python 문제 풀이 복습 : 리스트 & 튜플

STUDY_J·2024년 7월 17일

파이썬 문제풀이

목록 보기
1/9

파이썬 문제 풀이 복습

문제

정수 n을 함수의 인자로 받아, 사용자로부터 n개의 정수를 입력받아 이를 요소로 하는 튜플을 구성하여 반환하는 함수를 작성하시오. 이 함수를 사용하여 n개의 정수로 구성된 튜플을 생성하고 출력하는 프로그램을 작성하시오.

<요구사항>

  • 사용자가 입력한 정수의 개수는 함수에 인자로 전달
  • 사용자로부터 입력 받는 값은 양의 정수만으로 가정

문제 풀이에 앞서 문제풀이 순서를 손코딩으로 해보기

1) 정수 n을 인자로 받는 '함수'를 작성해야하므로 def create_tup(n) 라는 식으로 시작
2) 사용자로부터 n개의 입력을 받아 이를 요소로 하는 튜플을 구성하고 반환해야함
=> for문을 사용하여 range(n)에서 input()으로 입력을 받기.
=> 그런데 tuple은 append()를 사용할 수 없는데 어떤식으로 해야할까..
3)
방법 1: 빈 리스트를 만들고, 입력 받은 값들을 리스트에 추가하고 리스트를 튜플로 변환
방법 2: !!튜플은 덧셈이 가능하다!!, 빈 튜플을 만들고 입력받은 값을 빈 튜플에 더해주면 된다
방법 3: 제일 간단한 방법으로, tuple(map(int, input().split()))을 사용하여 바로 n개의 입력값을 튜플로 반환하는 방법이 있다.

# 방법 1
def creat_tup(n):
    blank_list = [] #빈 리스트 생성
    
    for _ in range(n): # n개의 입력을 받아야하기에 범위를 n으로 설정해준다
        elem_tup = int(input('정수를 입력해주세요: ')) # 정수 입력
        blank_list.append(elem_tup) # 입력받은 값을 append로 빈 리스트에 추가
        
    list2tup = tuple(blank_list) #채워진 리스트를 튜플형식으로 변환
    
    return list2tup
    
creat_tup(5) # 입력은 1,2,3,4,5 로 하겠음
# (1, 2, 3, 4, 5)
# 방법 2

def create_tup2(n):
    blank_tup = () # 빈 튜플 생성
    
    for _ in range(n):
        elem_tup = int(input('정수를 입력해주세요: ')), 
        # input을 정수형으로 받고 뒤에 콤마를 붙여주면 type이 tuple 로 된다.
        
        blank_tup += elem_tup # 빈 튜플에 요소를 더해준다.
        
    return blank_tup

create_tup2(5) # 입력을 1,2,3,4,5 로 동일 
# (1, 2, 3, 4, 5)
# 방법 3
def create_tup3(n):
	# 사용자가 입력한 n은 함수에 인자로 전달되며, 항상 양의 정수라는것이 전제조건이다.
    # input() 을 만들때, 사용자에게 n개의 정수를 입력하도록 명시하면 괜찮지 않을까
    
    make_tuple = tuple(map(int, input(f'{n}개의 정수를 입력하세요').split()))
    
    return make_tuple
    
    
create_tup3(5) # 입력은 1,2,3,4,5 로 동일
# (1, 2, 3, 4, 5)

각 방법에 대한 코드 오류와 주의 사항을 ChatGPT에게 물어보았다.

  • 방법 1:
    리스트에 값을 추가한 후, 이를 튜플로 변환하는 방식입니다.
    이 방식은 직관적이며 이해하기 쉽습니다.
    루프 내부에서 튜플 변환을 하지 않고, 루프가 끝난 후에 한 번만 변환하므로 성능도 좋습니다.

  • 방법 2:
    빈 튜플을 생성하고, 각 입력 값을 튜플에 더해주는 방식입니다.
    이 방식은 튜플의 불변성 때문에 새로운 튜플을 매번 생성하므로, 성능 면에서 약간의 오버헤드가 있을 수 있습니다.
    하지만 코드가 간결하고 이해하기 쉽습니다.

  • 방법 3:
    map과 split을 사용하여 한 줄로 입력을 튜플로 변환하는 방식입니다.
    이 방식은 매우 간결하고, 여러 개의 값을 빠르게 입력받을 수 있는 장점이 있습니다.
    하지만, 입력 형식이 맞지 않으면 에러가 발생할 수 있으므로 주의가 필요합니다.
    모든 방법이 올바르게 작동하며, 각각의 상황에 맞게 적절히 사용하면 됩니다. 각 방법을 실행하고 테스트할 때 입력값을 1, 2, 3, 4, 5로 설정하면 예상 출력과 같이 (1, 2, 3, 4, 5)가 출력될 것입니다.

문제에서 사용한 메소드 설명

1) tuple 더하기

참고 : https://velog.io/@y6hyuk/Python-%EB%B3%B5%EC%8A%B5-13-%ED%8A%9C%ED%94%8C%EA%B3%BC-%EB%A6%AC%EC%8A%A4%ED%8A%B8

2) list를 tuple로 변환

  • list를 tuple로 변환하는 방법 : tuple(list)

참고 : https://velog.io/@y6hyuk/Python-%EB%B3%B5%EC%8A%B5-13-%ED%8A%9C%ED%94%8C%EA%B3%BC-%EB%A6%AC%EC%8A%A4%ED%8A%B8

3) tuple(map(int, input().split()))

참고 : https://velog.io/@y6hyuk/Python-%EB%B3%B5%EC%8A%B5-14-input-%EC%9D%84-%EB%B0%9B%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95-mapint-input.split

0개의 댓글