입력을 이해했다고 생각했는데 완전히 이해하지는 않았다.
import sys
input = sys.stdin.readline
players = input().split(" ")
callings = input().split(" ")
여기서 split()
괄호 안에 아무것도 적지 않을 경우 \n
,
를 기준으로 나눈다.
나는 여기서 split(" ")
을 통해서 space를 기준으로 나누려고 했다.
근데 여기서 나누고 보니 마지막에 입력한 \n
이 남아있었고, rstrip으로 없애려고 했지만,
rstrip은 string에서만 사용가능했다. 하지만 split(" ")에서는 space를 기준으로 list를 만들기 때문에 또 list를 string으로 만드는 방법을 찾는데 시간을 꽤 썼다..😂
공식문서를 확인하면, rstrip() 함수랑 split() 함수에 관해서 알 수 있다.
str.split(sep=None, maxsplit=- 1)
sep 를 구분자 문자열로 사용하여 문자열에 있는 단어들의 리스트를 돌려줍니다. maxsplit 이 주어지면 최대 maxsplit 번의 분할이 수행됩니다 (따라서, 리스트는 최대 maxsplit+1 개의 요소를 가지게 됩니다). maxsplit 이 지정되지 않았거나 -1 이라면 분할 수에 제한이 없습니다 (가능한 모든 분할이 만들어집니다).
sep 이 주어지면, 연속된 구분자는 묶이지 않고 빈 문자열을 구분하는 것으로 간주합니다 (예를 들어, '1,,2'.split(',') 는 ['1', '', '2'] 를 돌려줍니다). sep 인자는 여러 문자로 구성될 수 있습니다 (예를 들어, '1<>2<>3'.split('<>') 는 ['1', '2', '3'] 를 돌려줍니다). 지정된 구분자로 빈 문자열을 나누면 [''] 를 돌려줍니다.
예를 들면:
sep 이 지정되지 않거나 None
이면, 다른 분할 알고리즘이 적용됩니다: 연속된 공백 문자
는 단일한 구분자
로 간주하고, 문자열이 선행이나 후행 공백을 포함해도 결과는 시작과 끝에 빈 문자열을 포함하지 않습니다. 결과적으로, 빈 문자열
이나 공백
만으로 구성된 문자열을 None 구분자로 나누면 []
를 돌려줍니다.
import sys
input = sys.stdin.readline
players = input().split()
callings = input().split()
이렇게 입력을 받으면 space와 \n 제거된 리스트를 만들 수 있다!
c나 다른 언어에서는 a
와 b
를 변경하려면 같은 자료형을 가진 변수(temp
)을 만들어서 옮긴다.
int a = 10;
int b = 11;
int temp
temp = a;
a = b;
b = temp;
하지만 python에서는 그냥 엄청 간단하게 변경했다.
a = 10
b = 11
a, b = b, a
hash table이라는 자료구조를 최근에 배웠는데 그냥 python에서는 dictionary를 이용하면 된다.
import sys
input = sys.stdin.readline
players = input().split()
callings = input().split()
def solution(players, callings):
player_result = {player: index for index, player in enumerate(players)}
index_result = {index: player for index, player in enumerate(players)}
for call in callings:
rank = player_result[call]
player_result[index_result[rank - 1]], player_result[index_result[rank]
] = player_result[index_result[rank]], player_result[index_result[rank-1]]
index_result[rank -
1], index_result[rank] = index_result[rank], index_result[rank-1]
return list(index_result.values())
#출처 https://somjang.tistory.com/entry/Programmers-%EB%8B%AC%EB%A6%AC%EA%B8%B0-%EA%B2%BD%EC%A3%BC-Python-featChatGPT
print(solution(players, callings))
python은 정말 잘 만든 거 같다. pythonic한 코드를 만들 수 있도록 노력하자. 공식 문서를 확인하는 습관을 들이자!