-
[자료구조] [python] Dynamic Array카테고리 없음 2021. 2. 1. 18:30728x90
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()