ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [codility] Counting Elements - PermCheck
    Algorithm 2021. 9. 23. 20:53

    문제

    A non-empty array A consisting of N integers is given.

    A permutation is a sequence containing each element from 1 to N once, and only once.

    For example, array A such that:

    A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2

    is a permutation, but array A such that:

    A[0] = 4 A[1] = 1 A[2] = 3

    is not a permutation, because value 2 is missing.

    The goal is to check whether array A is a permutation.

    Write a function:

    public func solution(_ A : inout [Int]) -> Int

    that, given an array A, returns 1 if array A is a permutation and 0 if it is not.

    For example, given array A such that:

    A[0] = 4 A[1] = 1 A[2] = 3 A[3] = 2

    the function should return 1.

    Given array A such that:

    A[0] = 4 A[1] = 1 A[2] = 3

    the function should return 0.

    Write an efficient algorithm for the following assumptions:

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

      Copyright 2009–2021 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.

     

    문제 해설

    A배열이 순열인지 아닌지 체크 

    순열이면 1 아니면 0 리턴

     

    구현 해설

    A 배열이 [3,1,2,4] 인경우에는 1 리턴

      [1,2,4] 인 경우에는 순열이 아니기 때문에 0 리턴

     

    import Foundation
    import Glibc
    
    // you can write to stdout for debugging purposes, e.g.
    // print("this is a debug message")
    
    public func solution(_ A : inout [Int]) -> Int {
        // write your code in Swift 4.2.1 (Linux)
    
        A.sort()
        for (index, _) in A.enumerated() {
            if index+1 != A[index] {
                return 0
            }
        }
        return 1
    }

    댓글

Designed by Tistory.