카테고리 없음
[자료구조] [python] Dynamic Array
carayoon
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()