algorithm/python

hackerrank/Data Structures/Arrays/Dynamic Array

아르르르를를르 2021. 7. 18. 16:52

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

식도 다 세워준 문제인데 지문 이해가 좀 어려웠다. input을 아래와 같이 이해하면 쉽게 해결된다.

2 5  // n q
1 0 5  // query_type x y
1 1 7
1 0 3
2 1 0
2 1 1

lastAnswer를 print하는데에 for문 안에서 그때그때 하는 것이 아니라

main 로직에서 return 된 result를 string으로 mapping 시킨 후 print 해주기에 나는 lastAnswer를 list에 담아 반환해주면 된다.

2차원 배열을 이해하는 문제이다.

 

<solved>

#!/bin/python3

import math
import os
import random
import re
import sys


def dynamicArray(n, queries):
    lastAnswer = 0
    arr = [[] for _ in range(n)]
    ans = []
    q = len(queries)
    
    for q in queries:
        q_typ = q[0]
        x = q[1]
        y = q[2]
        idx = (x^lastAnswer) % n
        if q_typ == 1:
            arr[idx].append(y)
        elif q_typ == 2:
            lastAnswer = arr[idx][y % len(arr[idx])]
            ans.append(lastAnswer)
    return ans

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()