Baekjoon 문제 풀기 (2920번 : 음계) Python

2920번 : 음계

1. 문제읽기


문자열 뒤집기 문제.

문자열을 뒤집는 방법을 알면 쉬운 문제이다.
리스트가 정해져 있으므로 단순 문제만 해결하려면 그냥 문자열을 만들어주는 방법도 있다.

2. 제출 코드


reverse=True 가 생각이 안나서 처음에는 reverse()를 쓰려고했는데, sort() 처럼 문자열 자체가 뒤집히는 함수여서 패스.
reversed()함수가 있길래 써보려고 했는데 list를 리턴하는 것이 아니라 list_reverseiterator 라는 객체로 리턴이 되어서 잘 모르겠어서 패스.
그러다가 reverse=True가 생각나서 풀었다.

a = list(map(int, input().split()))
asc = [1, 2, 3, 4, 5, 6, 7, 8]
des = sorted(asc, reverse=True)


if a == asc:
    print("ascending")
elif a == des:
    print("descending")
else:
    print("mixed")

3. 공부할 것


예전에 정리한 문자열 뒤집기 방법을 이용해서 list[::-1] 를 쓰면 됐는데 생각이 나질 않았다!!!
그리고 reversed()를 쓰는 방법을 잘 몰랐어서 궁금해서 정리한다.

reversed()
  • reverse iterator를 반환하는 함수.
  • list, tuple 등으로 다시 감싸줘야 사본을 만들어 사용할 수 있다.

나는 iterator 자체로 사용하려고 해서 계속 'list_reverseiterator' object is not subscriptable 오류가 났었다.
해석하자면 리스트 아닌데 왜 인덱스로 접근하려고하냐! 인데, 오류를 해결하려면 list로 한번 더 감싸주면 된다.

뒤집기 방법은 슬라이싱이 가장 효율이 좋다고 하니 꼭 좀 기억해서 쓰자!!!

댓글남기기