基礎力を鍛える
今日も天気がよくていいですね。
今日はなつかしい地域(旦那さんが学生時代過ごしたところで、よく遊びにきましたw)まで遊びにきて
カフェで朝活です!
今日もpaizaやっていきます。
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
// console.log(lines);
for (var i = 1; i < lines.length; i++) {
// console.log(lines[i]);
const arr = lines[1].split(" ").map(Number);
// console.log(arr);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
}
ご覧のとおりなんどもデバッグして苦労のあとがわかるかと思いますw
繰り返しで整数nを除いた配列を出力し
それをさらに分割
そして順番に繰り返しで出力。
という流れです。
しっちゃかめっちゃかした、最初の答え
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
// console.log(lines);
// console.log(lines[0]);
let result = '';
for (var i = 1; i < lines.length; i++) {
// console.log(lines[i]);
const member = lines[i].split(" ");
// console.log(member);
const age = parseInt(member[1]);
// console.log(age);
const updateAge = [];
updateAge.push(age + 1);
// console.log(updateAge);
for (var j = 0; j < lines[0]; j++) {
result += member[0] + ' ' + updateAge;
}
}
console.log(result);
空の結果の配列を用意して、n人分の繰り返しをし、
その中で「名前」「年齢」が一括りになったものを出力
「年齢」を数値化して更新する変数を用意したのはいいが、
そもそも年齢の更新は出力した年齢➕1と決まっているので、そこは空の配列にしなくてよし。
社員名と年齢を順番に出力して、年齢だけ➕1して
n人の結果を改行区切りで出力。
そう考えると以下になる。
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
let result = '';
for (var i = 1; i < lines.length; i++) {
const member = lines[i].split(" ");
const name = member[0];
const age = parseInt(member[1]);
const updatedAge = age + 1;
result += name + ' ' + updatedAge + '\n';
}
console.log(result);
うーん、もすこし!
なんのこれしきーって問題だし
他の言語でも使えることだからおぼえておこう。
「型」は大事!!ということです🖐️
それさえちゃんとすれば、いろいろこねくり回さなくてよし!
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
// console.log(lines);->[ '12:34' ]
const S = lines[0].split(':');
// console.log(S);->[ '12', '34' ]
const h = Number(S[0]);
console.log(h);
const t = Number(S[1]);
console.log(t);
要するに、console.log(S);までは全て文字列として出力されています。
数字では「01」とかっていう場合は「1」と認識されます。
だから数字型であるNumberに変換する必要があります。
これも少しだけ条件分岐に頭をひねる必要があります。
最初はif〜elseでネストを深くしすぎてわけわかめになってましたが、
必要な条件を書き出したら、ネストを作る必要はないことが判明…。
まず必要な条件はこちら。
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
// console.log(lines);->[ '01:02' ]
const S = lines[0].split(':');
// console.log(S);->[ '01', '02' ]
const hour = Number(S[0]);
// console.log(h);
const time = Number(S[1]);
// console.log(t);
const updateTime = time + 30;
let resultHour = hour;
let resultMinute = updateTime;
if (resultMinute >= 60) {
// 30分足した後のtimeが60より大きかったらtime - 60、hour + 1
resultMinute = resultMinute - 60;
resultHour = resultHour + 1;
}
// timeが10より小さかったら左側に0
if (resultMinute < 10) {
resultMinute = '0' + resultMinute;
}
// hourが24より大きかったら24をひく
if (resultHour >= 24) {
resultHour = resultHour -24;
}
// hourが10より小さかったら左側に0
if (resultHour < 10) {
resultHour = '0' + resultHour;
}
console.log(resultHour + ':' + resultMinute);
デバッグが多いので長いのはご容赦ください💦
今日はだいぶ問題解き進められました!
明日も頑張る!
駆け出しエンジニアなっちゃんの亀さんのような成長をあたたかく見守ってくださるとうれしいです。 自己研鑽に拍車をかけたいと思います!