튜플(tuple)

튜플(tuple)

튜플은 리스트와 굉장히 비슷합니다.

하지만 튜플은 리스트처럼 내용을 바꿀 수 없고, 리스트는 대괄호([, ])로 감싸져 있지만, 튜플은 소괄호((,))로 감싸져 있다는 차이점이 존재합니다.

t = (1, 2, 3)
l = [1, 2, 3]

그 외에는 리스트처럼 여러 가지 기능을 사용할 수 있습니다. 리스트에서 사용한 인덱싱, 슬라이싱, 연산(+, *) 전부 사용할 수 있습니다.

t = (1, 2, 3, 4, 5)
print(t[1]) # 2
print(t + (6, 7)) #(1, 2, 3, 4, 5, 6, 7)
print(t * 2) # (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
a, b, c, d, e = t
print(a, b, c, d, e)  # 1, 2, 3, 4, 5

t = (1,(2,3,4))
a, b = t
print(a, b) # 1, (2, 3, 4)

t = tuple("hello70825")
print(t) # ('h', 'e', 'l', 'l', 'o', '7', '0', '8', '2', '5')
print(len(t)) #10

a = tuple(map(int,input().split()))

튜플은 보통 변형을 하지 않는 리스트를 사용하는 문제에서 모두 사용할 수 있습니다.

두 번째 줄부터 입력값이 8개가 주어지는데 (HP), (MP), (공격력), (방어력) 4개 이후 증감되는 (HP), (MP), (공격력), (방어력)이 주어진다고 합니다.

arr 이라는 변수로 이것을 모두 튜플로 담아서 문제에 나온 공식을 이용하여 전투력을 출력해보겠습니다.

주의할 점은 HP와 MP는 1 미만의 값이 나오면 1로 설정해주고, 공격력은 0 미만의 미만의 값이 나오면 0으로 설정해줘야 합니다. 그러므로 if문을 이용해서 값들을 구해줄 수 있습니다.

t = int(input())
for i in range(t):
    arr = tuple(map(int,input().split()))
    HP = arr[0] + arr[4]
    if HP < 1: HP = 1
    MP = arr[1] + arr[5]
    if MP < 1: MP = 1
    ATK = arr[2] + arr[6]
    if ATK < 0: ATK = 0
    DEF = arr[3] + arr[7]
    print(HP + 5*MP + 2*ATK + 2*DEF)

해당 문제까지 연속되는 O의 개수만큼 점수를 얻고, 그 점수를 출력하는 문제입니다.

일단 입력받는 문자열이 붙어있는데 튜플을 이용하여 한 글자씩 나누어줍시다.

t = int(input())
for i in range(t):
    arr = tuple(map(int,input().split())

이러면 O, O, X, X, O, X, X, O, O, O로 한 글자씩 나누어져서 튜플형으로 바뀌게 됩니다.

한 문제씩 답안을 받는 것은 for문으로 쉽게 구할 수 있습니다. 연속된 점수를 받게 만드는 것도 if문으로 이용하여 for문안에 받을 수 있는 점수 값을 1씩 추가하거나 0으로 바꾸는 것으로 구현할 수 있겠습니다.

t = int(input())
for i in range(t):
    arr = tuple(input())
    score = 0 #총 점수
    x = 0 #더할 점수
    for j in range(len(arr)):
        # if/else로 O가 나오면 x에 1점을 추가하고, X면 x = 0으로 만들어주고 더함
        if arr[j] == 'O': x += 1
        else: x = 0
        score += x
    print(score)

튜플로 풀 수 있는 문제들은 모두 리스트로 풀 수 있지만, 리스트로 풀 수 있는 문제들은 튜플로 풀 수 없는 문제가 많기 때문에 저는 보통 전부 다 리스트로 풀고 있습니다.

풀어볼 문제

튜플 메서드

튜플에서 사용하는 메서드는 이미 list에서 배운 메서드입니다.

count

count는 찾고자 하는 값이 튜플 안에 몇 개가 있는지 출력하는 메서드입니다.

arr = ('h', 'e', 'l', 'l', 'o')
print(arr.count('l'))
# 2를 출력

print(arr.count('o'))
# 1을 출력

print(arr.count(1))
# 0을 출력

index

index는 요소의 위치를 찾아주는 메서드입니다. 찾고자 하는 값이 튜플에 여러 개가 있다면 index의 값이 가장 작은 위치를 반환합니다. 찾고자 하는 값이 튜플에 없으면 오류가 나옵니다.

arr = ('h', 'e', 'l', 'l', 'o')
print(arr.index('l'))
# 2를 출력

arr = (1, 2, 3, 1, 2, 3, 1, 2, 3)
print(arr.index(1))
# 0을 출력

Last updated