Reverse an Array

https://practice.geeksforgeeks.org/problems/reverse-an-array/0

배열이 주어졌을 때, 배열의 역순을 출력하는 문제다. 귀찮게도 이 문제는 직접 input을 읽는 코드까지 작정해야한다.

우선 문제 설명에 맞춰서 input을 읽으려 하는데, 문제가 발생했다.

if __name__ == "__main__":
    t = int(input())
    for _ in range(t):
        n = int(input())
        
        arr=[]
        for _ in range(n):
            arr.append(input())
        for ele in reverse(n,arr):
            print(ele, end=" ")
        print("")

더 이상 읽을게 없다고 난리친다.

if __name__ == "__main__":
    t = int(input())
<strong>    print(t)</strong>
    
    for _ in range(t):
        n = int(input())
<strong>        print(n)</strong>
        
        arr=[]
        for _ in range(n):
            arr.append(input())
        for ele in reverse(n,arr):
            print(ele, end=" ")
        print("")

위와 같이 print문을 추가해도 마찬가지다.

저렇게 두번 틀리고 나니까 Python 에서 input()은 한 줄 씩 읽는다는걸 기억해냈다.

다음과 같이 고치니 해결되었다.

if __name__ == "__main__":
    t = int(input())
    # print(t)
    for _ in range(t):
        n = int(input())
        # print(n)
        
        arr = input().split(" ")
        # print(arr)
        for ele in reverse(n,arr):
            print(ele, end=" ")
        print("")

알고리즘은 그냥 array index를 역순으로 만들어서 return 하게 만들었다.

def reverse(n, arr):
    ret=[]
    for i in range(n-1, -1, -1):
        ret.append(arr[i])
    return ret

첫번째 시작 인덱스 (n-1)는 inclusive, 두번째 끝 인덱스는 (-1)는 exclusive, 세번째 인자는 증감폭 (-1) 해서 새로운 배열값을 돌려준다. 끝.


전체 코드

def reverse(n, arr):
    ret=[]
    for i in range(n-1, -1, -1):
        ret.append(arr[i])
    return ret
    
if __name__ == "__main__":
    t = int(input())
    # print(t)
    for _ in range(t):
        n = int(input())
        # print(n)
        
        arr = input().split(" ")
        # print(arr)
        for ele in reverse(n,arr):
            print(ele, end=" ")
        print("")

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다