Baekjoon Online Judge

[python]10814.나이순 정렬

kickerLit 2021. 2. 3. 21:56

이 문제를 풀다가 알게된 새로운 사실이 있어서 글을 쓰게 되었다. 

 

1
2
3
4
5
6
7
8
n=int(input())
member=[]
for i in range(n):
    age, name=map(str, input().split())
    member.append(tuple(int(age), name()))
member.sort(key=lambda x: x[0])
for age, name in member:
    print(age, name)
cs

 

회원의 나이와 이름을 tuple constructor로 묶어 member라는 리스트에 append했는데 오류가 났다.

TypeError: tuple expected at most 1 argument, got 2

 

스택 트레이스

 

tuple생성자는 1개의 argument를 받는데 2개를 받았다는 것이였다.

파이썬 document를 보아도 이렇게 나와있다.

 

https://docs.python.org/3.9/library/stdtypes.html?highlight=tuple#tuple

 

https://stackoverflow.com/questions/61704534/purpose-of-tuple-constructor-in-python

그래서 위의 코드에서 member.append(tuple([int(age), name.lower()]))로 5번째 줄을 수정하였다.

 

1
2
3
4
5
6
7
8
9
n=int(input())
member=[]
for i in range(n):
    age, name=map(str, input().split())
    member.append(tuple([int(age), name.lower()]))
print(member)
member.sort(key=lambda x: x[0])
for age, name in member:
    print(age, name)
cs

오류가 해결되었다.

그리고 6번째 줄 sort하기 전의 member의 형태를 살펴보면, 

이런형태이다. tuple의 argument에 []로 둘러쌓인 data 2개를 넣어줘도 리스트가 아닌 튜플 그대로로 생성되는 것을 알 수 있다.

 

또는 이런형태로 수정이 가능하다.

 

1
2
3
4
5
6
7
8
9
n=int(input())
member=[]
for i in range(n):
    age, name=map(str, input().split())
   member.append([int(age), name.lower()])
print(member)
member.sort(key=lambda x: x[0])
for age, name in member:
    print(age, name)
cs

member.append([int(age), name.lower()])

tuple의 constructor로 생성하는 것이 아니라, data가 2개인 리스트를 member라는 리스트에 append하는 것이다.

 

다시 살펴보자면

 

print(tuple(["가나다라"])) #가나다라 라는 문자열 1개가 튜플 원소 1 =>('가나다라',)
print(tuple("가나다라")) #가나다라가 쪼개져서 각 원소로 존재 => ('', '', '', '')
print(list(["가나다라"])) #가나다라 라는 문자열 1개가 list 원소 1 =>['가나다라']
print(list("가나다라")) #가나다라가 쪼개져서 각 list element로 존재 => ['', '', '', '']

 

 

www.acmicpc.net/problem/10814

'Baekjoon Online Judge' 카테고리의 다른 글

[python]7568. 덩치  (2) 2021.04.29
[python]1914.하노이 탑  (0) 2021.02.11
[python]6566.애너그램 그룹  (0) 2021.01.27
[python]9020.골드바흐의 추측  (2) 2021.01.21
[python]4948.베르트랑 공준  (0) 2021.01.21