A問題の解き方 色々(ABC151 A - Next Alphabet)

備忘録

問題

atcoder.jp

回答1

"use strict"
function Main(input) {
  input = input.trim();
  const arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
  let ret = 0;
  arr.map((val, index) => {
    if(val === input){
      ret = index + 1;
    }
  })
 
  console.log(arr[ret]);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

競プロ初心者(私)が考えがちな回答。
愚直にアルファベットの配列とつくって、input文字のインデックスをループで探る回答。
回答はできるが、書くのに時間がかかる。

回答2

"use strict"
function Main(input) {
  input = input.trim();
  const arr = 'abcdefghijklmnopqrstuvwxyz'.split('');
  
  console.log(arr[arr.indexOf(input)+1])
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

アルファベットの文字列からsplitで配列にして、
indexOfinput文字の位置を探る回答。
ぱっと見、わかりやすいし、コードも少なく綺麗。

回答3

"use strict"
function Main(input) {
  input = input.trim();
  console.log(String.fromCharCode(input.charCodeAt() + 1))
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));

input文字を文字コードに変換し、変換された値に+1をして、
再度、文字コードの数値を文字に変換する回答。
競プロerっぽい、かっこいい。


普通に回答1で答えた後、書くのに数分時間を要したため少し他の方の回答を覗いたところ、
回答2や回答3で答えている方がいらっしゃたため、参考にさせていただきました。
ABCのA問題と言えど、他の方の回答コードを読むのめちゃくちゃ大切だと実感。