[プログラマ]残り1の数字を検索


プログラマーの第1段階の「残りの数字を探す」問題に答えた.

質問する


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

問題の説明


パラメータは自然数nを与える.nをxの残りを1とする最小自然数xで除算する解関数を完了してください.答えが常に存在することを証明することができます.

せいげんじょうけん


3 ≤ n ≤ 1,000,000

I/O例



説明する


バージョン1とバージョン2に分けて解きますが、実はこの2つの結果は同じ意味で、答えという変数の中間作成と作成しない違いです.
解釈の過程は以下の通りである.
  • xは自然数でなければならないので、自然数1からn-1で分けます.
  • このときforゲートから小数点に分かれているのでforゲートが回っていて残りが1になった瞬間に最小のxに分けられます.
  • 残り1の瞬間iを答えに保存し、中断してfor文を終了し、答えを返します.(ただし、このプロセスを経なくても、バージョン2のようにすぐにiを返すことができます.)
  • python ver.1

    # python ver.1
    def solution(n):
        for i in range(1, n):
            if n % i == 1:
                answer = i
                break
        return answer

    python ver.2

    # python ver.2
    def solution(n):
        for i in range(1, n):
            if n % i == 1:
                return i
    学習者はJavaScriptでアルゴリズムを解読しているのでPythonコードをJavaScriptに変換してみます.今はjavascriptに慣れていませんが、これからもPythonで問題を解いてjavascriptバージョンに変換してみます!

    JavaScript ver.

    function solution(n) {
        for(let i=1;i<n;i++){
            if(n%i===1){
                return i;
            }
        }
    }