第67回【JavaScript】単純な条件分岐、数値の分岐、数値演算結果で分岐

現在取り組んでいるのは、paiza ラーニング問題集「条件分岐メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

JavaScript をゼロから勉強してみよう、のコーナー 67 回目です。

何もないことを確認するための定例会って必要なんだろうか。何か変わりありませんか。ないですか。では引き続きよろしくお願いいたします。という 5 分弱のための定例会のために、倍以上の時間をかけて参加者全員の日程調整をしているわけだけれど。

それでは、今日も頑張ってみようと思います。

単純な条件分岐 (paizaランク D 相当)

文字列Sが与えられます。Sがpaizaと一致する場合はYESを、一致しない場合はNOを出力してください。


入力される値

S

入力値最終行の末尾に改行が1つ入ります。


期待する出力

YESまたはNOを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

YES

または

NO

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ Sは英小文字からなる文字列
・ Sの長さは 1 以上 20 未満


入力例

paiza

出力例

YES

単純な問題なので、単純に書けそう。しかし、JavaScript の場合、「==」を利用するか「===」を利用するかは大きな問題だ。

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const s = lines[0];
  if (s === 'paiza') {
      console.log('YES');
  } else {
      console.log('NO');
  }
});
Python
S = input()
if S == "paiza":
    print("YES")
else:
    print("NO")

数値の分岐 (paizaランク D 相当)

整数Nが与えられます。Nが 100 以下の場合はYESを、そうではない場合はNOを出力してください。


入力される値

N

入力値最終行の末尾に改行が1つ入ります。


期待する出力

YESまたはNOを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

YES

または

NO

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

・ Nは 1 以上 200 以下の整数


入力例

50

出力例

YES

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const n = Number(lines[0]);
  if (n <= 100) {
      console.log('YES');
  } else {
      console.log('NO');
  }
});
Python
N = int(input())
if N <= 100:
    print("YES")
else:
    print("NO")

数値演算結果で分岐 (paizaランク D 相当)

整数 A, B, C が与えられます。式 A × B ≦ C が成立している場合はYESを、そうではない場合はNOを出力してください。


入力される値

A B C

入力値最終行の末尾に改行が1つ入ります。


期待する出力

YESまたはNOを出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

YES

または

NO

また、末尾に改行を入れ、余計な文字、空行を含んではいけません。


すべてのテストケースにおいて、以下の条件をみたします。

 ・ A, B, C は 1 以上 200 以下の整数


入力例

2 3 7

出力例

YES

簡単ですね。注意すべきは、標準入力から受けた A B C の値は数値でないとダメ。

JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = [];
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line', (line) => {
  lines.push(line);
});
reader.on('close', () => {
  const [a,b,c] = lines[0].split(/\s/).map(Number);
  if (a * b <= c) {
      console.log('YES');
  } else {
      console.log('NO');
  }
});
Python
A,B,C = map(int,input().split())
if A * B <= C:
    print("YES")
else:
    print("NO")

最後に

「==」と「===」の違いは、型まで厳密に比較するかどうか、ということらしい。「==」では、数値と文字列の比較の場合、文字列を数値に変換してから比較する。1 == '1’ は True で、1 === '1’ は False になる。

なんだかとても不思議だ。もちろん、Python では、1 == '1’ は False です。なんで自動で型変換をしてしまうんだろう。ミスの温床になりそうで扱いが難しいなぁ。

引き続き、よろしくお願いいたします!

Python の第67回はこちら