AtCoder Beginner Contest 146 B - ROT N
最近コーラを飲むのにハマっています、ねむーです。
今回はAtCoder(https://atcoder.jp/contests/abc146/tasks/abc146_b)にて開催されました、AtCoder Beginner Contest 146 B問題「B - ROT N」の問題と僕との戦闘記です。
0.はじめに
1.問題文
英大文字のみからなる文字列 S があります。また、整数 N が与えられます。
S の各文字を、アルファベット順で N 個後の文字に置き換えた文字列を出力してください。
ただしアルファベット順で Z の 1 個後の文字は A とみなします。
2.制約
- 0 ≤ N ≤ 26
- 1 ≤ | S | ≤ 104
- S は英大文字のみからなる
3.入力例
- 入力
13 ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 出力
NOPQRSTUVWXYZABCDEFGHIJKLM
4.初見の感想
- 文字の変換はchar型が便利そう(+1などで文字変換できるので)
5.学びポイント
- Zを超えた時はAに戻さなければならない
- if文でZを超えた時を判定してもいいが…
増加分を26で割った余りを考えるのもアリ
6.コードと簡単な解説
using System; using System.Linq; class Program { static void Main(string[] args) { int N = int.Parse(Console.ReadLine()); char[] input = Console.ReadLine().ToCharArray(); string ans = ""; for (int i = 0; i < input.Length; i++) { char temp = (char)('A' +(input[i] + N-'A')%26); ans += temp; } Console.WriteLine(ans); } }
7.最後に
LINQなどを用いるともっと簡単に書けそうです…