ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료구조] [python] Dynamic Array
    카테고리 없음 2021. 2. 1. 18:30
    728x90

    Hackerrank의 Data structures 관한 문제 중에서 Easy에 속하는 문제이다. 원 문제 링크는 다음을 따라가보자. 

    www.hackerrank.com/challenges/dynamic-array/problem

     

    Dynamic Array | HackerRank

    Learn to use dynamic arrays by solving this problem.

    www.hackerrank.com

    Dynamic Array은 초기 설정된 자료의 크기에 국한되지 않고, 데이터를 이후에 추가할 수 있는 확장 가능한 자료형이다. 

    XOR은, 두 값이 동일하면 0을, 두 값이 동일하지 않으면 1을 출력하는 논리 연산이다

    문제 푸는 데 어려웠던 지점

    • 1) 초반에 x,y가 무엇인지에 대해서 파악하는 부분에서 풀이 시간이 지체되었다. query type 1, 2를 설명하는 부분의 첫째줄에서, 1 x(곱하기) y로 이해하였다. 곱하기가 아니라, query의 두번째 요소를 가리키는 미지수 x를 가리키는 말이었다.
    • Find the value of element y % size(arr[idx]) .... in arr[idx] 는 arr[idx]에서 계산된 요소의 값을 Last Answer에 대입하라는 뜻이었다.  
    def dynamicArray(n, queries):
        
        #문제 초기 설명대로, Last_answer 은 0으로 초기화, array는 2D의 2 by n개의 빈 list로 구성
        Last_answer = 0
        arr = [[] for i in range(n)]
        
        #마지막 output형태는 answer로 담아야, 최종적으로 제출된 화면에서 하나씩 print해줄 수 있다(시스템상)
        answer = []
        
        for q in queries:
            
            if q[0] == 1:
            	#XOR식은 '^'을 사용
                idx = (q[1]^Last_answer)%n
                arr[idx].append(q[2])
            
            else:
                idx = (q[1]^Last_answer)%n
                temp = q[2]%len(arr[idx])
                Last_answer = arr[idx][temp]
                answer.append(Last_answer)
            
        return answer
            
        # Write your code here
    
    if __name__ == '__main__':
        fptr = open(os.environ['OUTPUT_PATH'], 'w')
    
        first_multiple_input = input().rstrip().split()
    
        n = int(first_multiple_input[0])
    
        q = int(first_multiple_input[1])
    
        queries = []
    
        for _ in range(q):
            queries.append(list(map(int, input().rstrip().split())))
    
        result = dynamicArray(n, queries)
    
        fptr.write('\n'.join(map(str, result)))
        fptr.write('\n')
    
        fptr.close()
    
Designed by Tistory.