[programmers]-2016年


1. Problem 📃


https://programmers.co.kr/learn/courses/30/lessons/12901

次の問題は、x月x日を入力すると曜日が表示される関数を作成することです.

2. Logic 👨‍🏫

  • 12016年1月1日金曜日.リストをディレクトリから水曜日に作成し、インデックスを考慮します.
  • 1月から12月までの当月日数をリストにします.
  • sum関数とスライスを使って週に戻ると終わります!
  • 3. Code 💻

    def solution(a, b):
        answer = ["THU","FRI","SAT","SUN","MON","TUE","WED"]
        month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        return (answer[(sum(month[:a-1]) + b) % 7])

    4. Feedback 📚


  • この問題が初めて発生した場合、主にC言語を使用した経験があるため、重複文とifelse文を使用して日付を追加できます.残りの部分は上記のコードと似ています.
    ただし,コード長の差が大きく,論理が不足しているため,上のコードに修正する.その過程で知ったことを整理してみます.

    4.1 Sum function


    「Sum Prototypesum(iterable)RETURN」パラメータとして入力したiterable内部のすべての要素の和
    数値をiterable形式で入力する必要があります.すなわち、リストや凡例などの循環インデックスアクセス可能なデータ型であり、数値のみで構成されます.ここで、数字は整数であっても実数であってもよい.
    Sum Prototypesum(iterable,start=0)RETURNIterableの和+start値
    最初のパラメータ:iterableと数値データ付きオブジェクト、変数
    2番目のパラメータ:最初に追加する数値
  • # ========================================================== # 
    # 예제 1 : 두번째 인자의 값을 정해주지 않았을 때
    sum(iterable, start = 0)  
    result1 = sum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 
    result2 = sum([]) 
    
    # start에 아무것도 넣지 않으면 0이 들어간것과 같기 때문에 0이 더해져서 결과가 아래와 같습니다. 
    print(result1) # 출력 : 55 (리스트) + 0 (start) = 55 
    print(result2) # 출력 : 0 (리스트) + 0 (start) = 0 
    
    # ========================================================== # 
    # 예제 2 : 두번째 인자의 값을 정해줬을 때
    sum(iterable, start = 0)  
    result3 = sum([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 45) 
    result4 = sum([], 45) 
     
    # start 에 45를 넣었기 때문에 첫번째 인자의 합과 45가 더해진 값이 나옵니다. 
    print(result3) # 출력 : 55 (리스트) + 45 (start) = 100 
    print(result4) # 출력 : 0 (리스트) + 45 (start) = 45