Affel 15日目1/14(金)

4035 ワード

今日初めてコーディングテストを練習しました.
これをするのは本当に面白いです.難しい問題は頭を絞って解決しようとしても解決できないことですが、このような悩みを経験する過程も私に多くのことを学ぶことができて、私に役に立ちます.週に1回しかやってないのがちょっともったいない!

  • 平均値を求める
    Q.整数を含む配列arrの平均値を返す関数を作成します.
    (arrは長さが1より大きく、100未満の配列であり、arrの要素は-1000または10000未満の整数である)
    <나의 >
    def solution(arr):
        answer = sum(arr)/len(arr)
        return answer

  • スイカスイカスイカ...スイカの数...
    Q.長さn、「スイカスイカ数…」関数を完了し、同じモードを維持する文字列を返します.例えば、nが4であれば「スイカ数」、3であれば「スイカ数」を返します.
    (nは、長さが10000未満の自然数である.)
    <나의 >
    def solution(n):
        answer = ' '
        if n % 2 == 0:
            answer = '수박'*(int(n/2))
        else:
            answer = '수'+'박수'*(int(n//2))
        return answer
        
     <다른사람들의 >
    def water_melon(n):
        s = "수박" * n
        return s[:n]
    ------------------------------
    def water_melon(n):
        return "수박"*(n//2) + "수"*(n%2)
    他の人の解答を見て、みんなはとても起きられないと思っています.頑張ってついて行こう

  • マトリックスの加算
    Q.行列の加算は、2つの同じ行と列の大きさの行列の同じ行と同じ列の値を加算した結果です.2つのマトリクスarr 1とarr 2を入力し、マトリクス加算結果の関数を返し、解を完了します.
    (行列arr 1、arr 2の行および列の長さは500を超えない.)
     <나의 >
     def solution(arr1, arr2):
        answer = []
        for i in range(len(arr1)):
            list_in_answer = []
            for j in range(len(arr1[i])):
                list_in_answer.append(arr1[i][j]+arr2[i][j])
            answer.append(list_in_answer)
        return answer
        
     <다른 사람들의 >
     def sumMatrix(A,B):
        answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]
        return answer
        --------------------------
     def sumMatrix(A,B):
        for i in range(len(A)) :
            for j in range(len(A[0])):
                A[i][j] += B[i][j] 
        return A
        --------------------------
     def sumMatrix(A,B):
        return [list(map(sum, zip(*x))) for x in zip(A, B)]
        --------------------------
     def sumMatrix(A,B):
        answer = [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]
    この問題は本当に難しいですが、たくさんのことを学ぶことができる問題です.
    2 Dリストの概念自体が混同されているため,試行錯誤し,数回の試行錯誤を経て完成し,様々な異なる内蔵関数を用いて簡単に解くことができるようになった.
    zip関数、map関数、リストを使用してコンパイルされたリスト式、+=の概念について
    補足が必要です.

  • 完走していない選手
    Q.多くのマラソンランナーがマラソンに参加しています.1人の選手を除いて、すべての選手がマラソンを完走した.
    マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
    (マラソンに出場する選手は1名以上10万名以下.
    完了長さは参加者の長さ1より小さい.
    参加者の名前には、少なくとも1つまたは20個の小文字が含まれています.
    参加者は同名であってもよい.)
    <나의 >
    def solution(participant, completion):
        for person in participant:
            if person not in completion:
                return person
            elif participant.count(person) != completion.count(person):
                return person
            else:
                continue
  • 最後の問題は結局合格しなかった.
    精度テストに合格しましたが、効率テストに失敗しました.
    他の人の答えではsort関数が最も多く使われています.
    collectionライブラリのcounter関数を使用すると、効率テストでの処理速度が非常に速くなり、最も効率的なコードで記述できます.
    私は週末を利用して真剣に分析し、いくつかの答えを更新します.