강승현입니다
    • 홈
    • 태그
    • 방명록

    카테고리

    • 전체 글 (118)
      • 후기 (38)
        • 경험 (15)
        • SSAFY (9)
        • 코딩테스트 (3)
        • 넥스터즈 (6)
        • 회고 (5)
      • Degrees (2)
      • Tech (33)
      • OnlineJudge (45)
    OnlineJudge

    [Codility] Lesson4 MaxCounters 풀이 Python

    CODe_byCODe_·2021. 6. 22. 00:29

     

    문제로이동

     

    MaxCounters coding task - Learn to Code - Codility

    Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.

    app.codility.com


    목차

       


       


      문제 설명

      체감상 Lesson4 테스트 문제 중 해결하는데 가장 오래걸렸습니다.

      입력 값으로 N과 배열 A가 입력됩니다.

      최종적으로 N개 만큼의 카운터를 출력해야 하고

      N=5일 때
      (0, 0, 0, 0, 0)과 같은 형식으로 출력

       

      이 카운터를 어떻게 연산하느냐가 관건입니다.

      예제를 보며 기능을 설명하겠습니다.

       

      A[0] = 3

      A[1] = 4

      A[2] = 4

      A[3] = 6

      A[4] = 1

      A[5] = 4

      A[6] = 4

       

      첫째, 일반적인 증가

      A[0] = 3

      3번 공간에 1만큼 증가.

      이 때 MAX 값이 1로 갱신됩니다.

      두번째 기능을 위해서 항상 MAX값을 갱신시켜주어야 합니다.

       

      A[2] = 4

      이전 상태인 (0,0,1,1,0)에서 4번째 공간에 1을 더 증가하게 되는데 이 때 MAX값이 1에서 2로 갱신됩니다.

       

      둘째, 최대값 동기화

      A[3] = 6

      N보다 큰 6이라는 값이 들어왔을때는 모든 배열을 MAX값으로 동기화 해줘야 합니다.

      이전 상태인 (0,0,1,2,0)에서 A[3] 실행후 모두 (2,2,2,2,2)로 동기화 되는 모습을 볼 수 있습니다.


      소스 코드

      Python

      def solution(N,A):
          savemaximum = 0
          maximum = 0
          counter = [0]*N
          for i in range(len(A)):
              if A[i]<=N:
                  if counter[A[i]-1]<savemaximum:
                      counter[A[i]-1]=savemaximum
                  counter[A[i]-1]+=1
                  maximum = max(counter[A[i]-1],maximum)
              else:# N보다 큰 수가 들어오면 maximum으로 동기화
                  savemaximum = maximum
          for i in range(N):
              if counter[i]<savemaximum:
                  counter[i]=savemaximum
          return counter
      
      print(solution(5, [3, 4, 4, 6, 1, 4, 4]))

      Java8

      #
      반응형
      저작자표시 비영리 변경금지 (새창열림)
      'OnlineJudge' 카테고리의 다른 글
      • [백준] 2573 빙산 풀이 Python
      • 백준 1016 제곱ㄴㄴ수 풀이 Python
      • [Codility] Lesson4 MissingInteger 풀이 Python
      • [Codility] Lesson4 FrogRiverOne 풀이 Python
      CODe_
      CODe_
      개발과 관련된 다양한 정보를 몰입감있게 전달합니다.
      최신 글

      티스토리툴바