第52回【JavaScrip】指定要素があるかの判定、指定要素の先頭位置
現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
JavaScript をゼロから勉強してみよう、のコーナー 52 回目です。
キャンプに行ってリフレッシュするつもりが、余計に疲れて帰ってくることがあります。それは、周りがうるさくて眠れなかったときが多いです。犬がずーっと吠えていた、とか、子供がずーっと泣いていた、とか、夜中まで終わらないパーティー、とか。キャンプ人口が増えるにつれて、マナーの乱れが顕著です。
それでは、今日も頑張ってみようと思います。
指定要素があるかの判定 (paizaランク D 相当)
配列 A の要素数 N と整数 K , 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、A に K が 1 つでも含まれている場合は Yes
を、含まれていない場合は No
を出力してください。
入力される値
N K
A_1
...
A_N
・1 行目では、配列 A の要素数 N と整数 K が半角スペース区切りで与えられます。
・続く N 行では、配列 A の要素が先頭から順に与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
A に K が 1 つでも含まれている場合は Yes
を、含まれていない場合は No
を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100
・0 ≦ K , A_i ≦ 100 (1 ≦ i ≦ N)
入力例
1 0
1
出力例
No
Python で書いたものを見て愕然とした。このときはちゃんと break を入れるとかしていなかったんだなぁ。なんでだろう。
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] = lines[0].split(/\s/).map(Number);
const L = [];
for (let i = 1; i <= n; i++) {
L.push(Number(lines[i]));
}
if (L.includes(k)) {
console.log('Yes');
} else {
console.log('No');
}
});
Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
if K in A:
print('Yes')
else:
print('No')
指定要素の先頭位置 (paizaランク D 相当)
配列 A の要素数 N と整数 K , 配列 A の各要素 A_1, A_2, …, A_N が与えられるので、K であるような A の要素のうち、要素番号が最小のものを出力してください。
A に K が含まれない場合は -1 を出力してください。
入力される値
N K
A_1
...
A_N
・1 行目では、配列 A の要素数 N と整数 K が半角スペース区切りで与えられます。
・続く N 行では、配列 A の要素が先頭から順に与えられます。
入力値最終行の末尾に改行が1つ入ります。
期待する出力
A に K が含まれる場合は K であるような A の要素のうち要素番号が最小のものを、含まれない場合は -1 を 1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 100
・0 ≦ K , A_i ≦ 100 (1 ≦ i ≦ N)
入力例
1 0
1
出力例
-1
と思ったら、前問と違い、きちんと break で処理をしている。
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] = lines[0].split(/\s/).map(Number);
const L = [];
let ans = -1;
for (let i = 1; i <= n; i++) {
L.push(Number(lines[i]));
}
for (let i = 0; i < n; i++) {
if (L[i] == k) {
ans = i + 1;
break;
}
}
console.log(ans);
});
Python
N,K = map(int,input().split())
A = [int(input()) for _ in range(N)]
ans = -1
for i in range(N):
if A[i] == K:
ans = i + 1
break
print(ans)
最後に
2 問目については、いろいろと方法を模索してみたのだけれど、うまくいく方法を思いつくことが出来ず。ここもまだまだ勉強不足だなぁと反省。
過去に自分で解いた問題を見直すと、なんでこんな書き方をしているのだろう、と疑問に思うことが出てきます。まだ、完璧には身についていなかった証拠みたいなものです。恥ずかしい思いもありますが、特に直そうとは思っていません。それによって正答が導き出されないならば、もちろん直しますが。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません