문제 자체는 간단하게 보인다.
입력은 8개의 서로 다른 정수 한 줄 뿐이고, 배열에 따라 descending, ascending, mixed 중 하나를 골라 출력하면 된다. (Example 1 같은건 신경안써도 됨)
간단해 보이는 문제지만, 고전했다. 그 이유로는 여럿이 있는데, 우선 첫번째는 저 Example 1, 2, 3 이런것도 출력해야 하나 하고 출력에 넣었다가 안 넣어도 된다는 것을 깨달았다. 두번째 이유는 내 성급함이다. 입력을 항상 받던대로 sys.stdin.readline()으로 받고, 리스트에 넣은 다음 배열해서 출력하는 것이 계속 실패해서 다른 사람의 코드를 좀 보려고 찾아봤는데,
이렇게 c++로 쓴 코드가 나왔다. 보니까 gets함수를 사용해서 입력을 받는데, 이게 버퍼와 관련이 있다는 얘기가 있어서 파이썬도 버퍼를 써야하나? 란 생각에 memoryview, 리다이랙션, 파이프 이런 것들이 나와서 찾아보다가 뭔가 이렇게까지 해야할 문제가 아닌 거 같아서 처음으로 돌아왔다. 세번째 이유는 내가 알고있는 것에 잘못된 점이 있었다는 것이다.
난 원본 배열을 훼손하고 싶지 않아 sorted, reversed 등 본체에 영향을 주지않는 함수를 많이 쓰는데, reversed함수에 리스트를 넣으면 저렇게 list_reverseiterator가 나오고, list함수를 한번 더 써줘야 거꾸로 뒤집힌 리스트가 나온다는 것이다.
그렇게 여러 실수 후 최종적인 코드를 짰다. 간단하다.
1
2
3
4
5
6
7
8
9
10
11
|
#note
example = list(map(int, input().split())) # 입력
nex = example
asex = sorted(nex) # 오름차순
deex = list(reversed(asex)) # 내림차순
if example == deex:
print("descending")
elif example == asex:
print("ascending")
else:
print("mixed")
|
느낀점:
1. reversed를 쓸 때는 주의하자. 저거때문에 한 3번은 오답을 낸듯...
2. 댓글에 콘솔 입력 처리 문제라는 게 있어서 쫄았는데, 막상 해보니 간단했다.
'코테용 문제풀이 > 알고스팟' 카테고리의 다른 글
알고스팟 Mismatched Brackets 문제 파이썬으로 풀기 (0) | 2019.09.12 |
---|---|
알고스팟 yulo 문제 파이썬으로 풀기 (0) | 2019.09.06 |
알고스팟 divisibility 문제 파이썬으로 풀기 (0) | 2019.08.27 |
알고스팟 tiling2 문제 파이썬으로 풀기 (0) | 2019.08.26 |
알고스팟 hamming code 문제 파이썬으로 풀기 (0) | 2019.08.22 |