TIL_210223



きょう習った

  • コドン
  • を再解読
  • 変数と資料型
  • 条件文

  • 変数とデータ型


    質問する


    パラメータとして文字列を受信し、感嘆符を付けて返信するWordWithJoyを返す関数があります.文字列「I love coding」を関数としてWordWithJoyの最初のパラメータ呼び出しを返し、結果値を変数wordに割り当てます.
    // 문자열을 인자로 받아서 느낌표를 붙여서 리턴 해주는 함수 returnWordWithJoy가 있습니다.
    // 함수 returnWordWithJoy의 첫 번째 인자로 문자열 "I love coding"을 넣어서 호출하고,
    // 그 결과값을 변수 word에 할당하세요.
    
    // TODO : 이곳에 코드를 입력합니다
    
    // 아래 코드는 변경하지 마세요
    function returnWordWithJoy(word) {
      if (typeof word !== 'string') {
        return 'wrong type';
      } else {
        return word + '!';
      }
    }

    私の間違い


    これは実は耻ずかしい間違いの答えです.私が問題を読み間違えたからです.
    一度予科を受けたことがあるので,すっかり油断してしまった.
    結果値を変数wordに割り当てることは示されていません.let word = returnWordWithJoy('I love coding')を入力する必要があります.returnWordWithJoy('I love coding')万入力...
    あ….恥ずかしい...

    だから私は何を学びましたか。


    問題を解くときだけでなく、論理とコードを書くとき、私がしなければならないことを正確に把握し、実行に移します.

    条件文


    質問です。


    入力した時間、分、秒の数は、秒単位で結果値を特定の形式で返さなければなりません.
    ~
    入力
    パラメータ1 hour:numberタイプの整数(0<=hour&&&hour<24)
    パラメータ2 minute:numberタイプの整数(0<=mine&&minute<60)
    パラメータ3 second:numberタイプの整数(0<=second&&second<60)
    ~
    しゅつりょくstring 타입을 리턴해야 합니다. 1초 뒤에 {hour}시 {minute}분 {second}초 입니다 형식으로 리턴해야 합니다.~
    I/O例
    let output = addOneSecond(14, 17, 59);
    console.log(output); // --> '1초 뒤에 14시 18분 0초 입니다'
    output = addOneSecond(1, 59, 59);
    console.log(output); // --> '1초 뒤에 2시 0분 0초 입니다'
    output = addOneSecond(3, 24, 29);
    console.log(output); // --> '1초 뒤에 3시 24분 30초가 입니다'
    output = addOneSecond(23, 59, 59);
    console.log(output); // --> '1초 뒤에 0시 0분 0초 입니다'

    私のエラーコード

    function addOneSecond(hour, minute, second) {
    
    //결과를 담을 변수들을 선언한다
    let hh = 0
    let mm = 0
    let ss = 0
    
    // second가 0보다 크거나 같고, 59보다 작거나 같을 때 ss에 second를 더한다
    // second가 60일 때 ss는 0, mm에 1을 더한다
    if(second === 60){
      ss = 0;
      mm = mm + 1
    } else {
      ss = ss + second + 1
    }
    
    // minute가 0보다 크거나 같고, 59보다 작거나 같을 때 mm에 minute를 더한다
    // minute가 60일 때 mm과 ss는 0, hh에 1을 더한다 
    if(minute === 60){
      ss = 0;
      mm = 0;
      hh = hh + 1
    } else {
      mm = mm + minute
    }
    
    // hour가 0보다 크거나 같고 23보다 작거나 같을 때 hh에 hour를 더한다
    // hour가 24일 때 hh, mm, ss를 모두 0으로 만든다.
    if(hour === 24){
      ss = 0;
      mm = 0;
      hh = 0;
    } else {
      hh = hh + hour
    }
    
    
    //리턴한다
    return `1초 뒤에 ${hh}${mm}${ss}초 입니다`
    
    }
    
    

    の原因となる


    コード自体も非常に原始的ですが、致命的なエラーも発生しています.
    私が作成したコードは、条件文が初めて入力された瞬間にのみ判定されます.addOneSecond(6, 59, 59)と入力し、1초 뒤에 6시 60분 60초 입니다を返します.

    解決する


    条件を変更しました.パラメータ値を+1に変換して比較し,すべて解決した.

    最終コード

    function addOneSecond(hour, minute, second) {
    
    //결과를 담을 변수들을 선언한다
    let hh = 0
    let mm = 0
    let ss = 0
    
    // second가 0보다 크거나 같고, 59보다 작거나 같을 때 ss에 second를 더한다
    // second가 60일 때 ss는 0, mm에 1을 더한다
    if(second +1 === 60){
      ss = 0;
      mm = mm + 1
    } else {
      ss = ss + second + 1
    }
    
    // minute가 0보다 크거나 같고, 59보다 작거나 같을 때 mm에 minute를 더한다
    // minute가 60일 때 mm과 ss는 0, hh에 1을 더한다 
    if(minute +1 === 60){
      ss = 0;
      mm = 0;
      hh = hh + 1
    } else {
      mm = mm + minute
    }
    
    // hour가 0보다 크거나 같고 23보다 작거나 같을 때 hh에 hour를 더한다
    // hour가 24일 때 hh, mm, ss를 모두 0으로 만든다.
    if(hour+1 === 24){
      ss = 0;
      mm = 0;
      hh = 0;
    } else {
      hh = hh + hour
    }
    
    
    //리턴한다
    return `1초 뒤에 ${hh}${mm}${ss}초 입니다`
    
    }

    リファレンスコードと私の違い


    論理そのものには大きな違いはない.判定と初期化方法のみが若干異なる.
    私のコードも悪くありませんが、これは条件判定エラーです.もし後でコードの作成が上手になったら、圧縮コードを練習してみてください.