반응형
백준 1316번 문제를 풀다가 다른 사람들은 어떻게 풀었을까 궁금해서 숏코딩 찾아보다가.
sorted 함수의 key에서 find를 쓴 걸 발견했다. 와 이렇게도 푸는 구나.
그런데 sorted(word, key=word.find)가 뭐고 이걸 왜 쓰는 걸까?
한 번 코드를 다시 살펴봤다.
word = input()
list_word = list(word)
sorted_word = sorted(word, key=word.find)
sorted_word_2 = sorted(word)
print(word)
print(list_word)
print(sorted_word)
print(sorted_word_2)
로 돌리면 다음과 같이 나타났다.
kabcabc
['k', 'a', 'b', 'c', 'a', 'b', 'c']
['k', 'a', 'a', 'b', 'b', 'c', 'c']
['a', 'a', 'b', 'b', 'c', 'c', 'k']
단순히 sorted(word) 만 하면 a, b, c 순으로 다시 정렬되어서 나타나고,
sorted(word, key=word.find)를 하면 기존의 k가 먼저나온 순서는 지키면서 중복 값들을 정렬해주었다.
sorted는 값, key, reverse를 파라미터 값으로 받는데 reverse=False 이건 익숙해도 key 부분을 이렇게 쓰는 건 처음봐서 좀 신기했다.
이렇게 파이썬 추가 기능 하나 더 배움.
추가로, 백준 1316번의 그룹 단어 체커 코드 직접 풀면서 짜본 코드도 함께 포스팅.
# 1316 그룹 단어 체커
n = int(input())
c = 0
for i in range(n):
a = list(map(str, input()))
b = []
for i in range(0, len(a)):
if a[i] not in b:
b.append(a[i])
else:
if a[i] == a[i-1]:
b.append(a[i])
else:
pass
if len(a) == len(b):
c += 1
else:
pass
print(c)
하핫 왜 난 코드가 긴가ㅎㅎ.
맨 처음 문제를 받았을 때 이걸 어떻게 해결하지? 라고 생각하면서 시간이 좀 걸렸다.
시간이 좀 걸려도 스스로 푸는 게 좋다고 생각한다. 수학 문제 푸는 기분이다.
자주 유용하게 쓰는 for문과 리스트 위주로 풀었다.
끝:)
반응형
'Python' 카테고리의 다른 글
pycharm 변수명 바꾸기_ctrl+R (0) | 2022.08.22 |
---|---|
f-string, float형일 때 2자리까지 표시하기 (0) | 2022.08.22 |
Python) 인수, 매개변수, 함수, *args, **kwargs 정리 (0) | 2022.07.31 |
[pyscript] 99프로의 사람을 위한 프로그래밍을 만들어 나가겠습니다 (0) | 2022.07.14 |
ValueError: could not convert string to float: '' (0) | 2022.07.10 |