第76回【JavaScript】池の周回、崖に落ちるか判定
現在取り組んでいるのは、paiza ラーニング問題集「条件分岐メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 76 回目です。
禁煙してもう 10 年くらいになります。昔吸っていたわけで、喫煙者の気持ちが分からないわけではないです。それでも、度々喫煙で席を外されるとイラっとします。ヘビースモーカーでしたけれど、仕事のときには弁えていたつもりです。1 時間ごとに出て行く人って何を考えているんだろう。
それでは、今日も頑張ってみようと思います。
池の周回 (paizaランク C 相当)
京子ちゃんは 1 周がNメートルの円の外周上にいます。京子ちゃんは 1 ターンで現在地点から K メートル時計回りに円周上を歩きます。スタート地点から開始してTターン歩いたとき、京子ちゃんが丁度スタート地点に戻ってきているかどうかを判定してください。ただし、京子ちゃんは各ターン必ず歩く必要があり、同じ場所にとどまることはできません。
入力される値
N K T
入力値最終行の末尾に改行が1つ入ります。
期待する出力
京子ちゃんがTターン後にちょうどスタート地点にいる場合はYES
を、そうではない場合はNO
を出力してください。
YES
または
NO
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ N, K, T は 1 以上 100 以下の整数
・ N ≧ K
入力例
9 3 3
出力例
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,k,t] = lines[0].split(/\s/).map(Number);
if (k * t % n == 0) {
console.log('YES');
} else {
console.log('NO');
}
});
Python
N,K,T = map(int,input().split())
if K * T % N == 0:
print("YES")
else:
print("NO")
崖に落ちるか判定 (paizaランク C 相当)
直線上の道があり、最初は X = 0 の地点にいます。この道はX = T + 0.1 の地点で崖になっています。また、 1 歩でX軸方向にK進むことができます。崖に落ちずにN歩進むことはできるでしょうか。
入力される値
N K T
入力値最終行の末尾に改行が1つ入ります。
期待する出力
崖に落ちずにN歩進むことができる場合はYES
を、そうではない場合はNO
を出力してください。
YES
または
NO
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ N, K, T は 1 以上 100 以下の整数
入力例
2 5 10
出力例
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,k,t] = lines[0].split(/\s/).map(Number);
if (n * k < t + 0.1) {
console.log('YES');
} else {
console.log('NO');
}
});
Python
N,K,T = map(int,input().split())
if N * K < T + 0.1:
print("YES")
else:
print("NO")
最後に
ちょっとだけ落とし穴はあったけれど、難しくはない問題だったと思います。実際にありそうな判定なので、面白いなぁと思いました。
いつもいつも、もっと綺麗な書き方があるだろう、もっとわかりやすい書き方があるだろう、と頭を悩ませています。もっと勉強しないと追いつけない!
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません