Programming/์ฝ”ํ…Œ

Codility - Lesson 4 - 2. MaxCounters

Task Description

You are given N counters, initially set to 0, and you have two possible operations on them:

 

  • increase(X) − counter X is increased by 1,
  • max counter − all counters are set to the maximum value of any counter.

A non-empty array A of M integers is given. This array represents consecutive operations:

 

  • if A[K] = X, such that 1 ≤ X ≤ N, then operation K is increase(X),
  • if A[K] = N + 1 then operation K is max counter.

For example, given integer N = 5 and array A such that:

 

     A[0] = 3

     A[1] = 4

     A[2] = 4

     A[3] = 6

     A[4] = 1

     A[5] = 4

     A[6] = 4

 

the values of the counters after each consecutive operation will be:

 

     (0, 0, 1, 0, 0)

     (0, 0, 1, 1, 0)

     (0, 0, 1, 2, 0)

     (2, 2, 2, 2, 2)     

     (3, 2, 2, 2, 2)

     (3, 2, 2, 3, 2)

     (3, 2, 2, 4, 2)

 

The goal is to calculate the value of every counter after all operations.

 

Write a function:

 

  • def solution(N, A)

that, given an integer N and a non-empty array A consisting of M integers, returns a sequence of integers representing the values of the counters.

 

Result array should be returned as an array of integers.

 

For example, given:

 

     A[0] = 3

     A[1] = 4

     A[2] = 4

     A[3] = 6

     A[4] = 1

     A[5] = 4

     A[6] = 4

 

the function should return [3, 2, 2, 4, 2], as explained above.

 

Write an efficient algorithm for the following assumptions:

 

  • N and M are integers within the range [1..100,000];
  • each element of array A is an integer within the range [1..N + 1].

Code

# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

# ์ •๋‹ต๋ฅ  66%

def solution(X, A):
    # write your code in Python 3.6
    new_A = [0] * X

    for a in range(len(A)):
        if A[a] == X + 1:
            new_A = [max(new_A)] * X
        else:
            new_A[A[a] - 1] = new_A[A[a] - 1] + 1
    
    return new_A

'Programming > ์ฝ”ํ…Œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Codility - Lesson 4 - 1. FrogRiverOne  (0) 2021.01.05
Codility - Lesson 3 - 3. TapeEquilibrium  (0) 2021.01.03
Codility - Lesson 3 - 2. PermMissingElem  (0) 2021.01.03
Codility - Lesson 3 - 1. FrogJump  (0) 2020.12.18
Codility - Lesson 2 - 1. CyclicRotation  (0) 2020.12.09