Tenka1 Programmer Beginner Contest 2019 B - *e**** ********e* *e****e* ****e**
休日に腰を痛めてしまいました、ねむーです。
今回はAtCoder(https://atcoder.jp/contests/tenka1-2019-beginner)にて開催されました、Tenka1 Programmer Beginner Contest 2019 B問題「B - e e *ee *e」の問題と僕との戦闘記です。
0.はじめに
1.問題文
英小文字からなる長さ N の文字列 S と整数 K が与えられます。 S の K 番目の文字と異なる文字全てを * で置き換えてできる文字列を出力してください。
2.制約
- 1 ≤ K ≤ N ≤ 10
- S は英小文字からなる長さ N の文字列である
- N , K は整数である
3.入力例
- 入力
9 education 7
- 出力
******i**
4.初見の感想
- 文字列を前からループかけて、K番目の指定した文字との文字列比較で表示を変更すればよい
5.学びポイント
- 「K番目」は1から始まる、実際の文字列配列は0から始まるので要注意
6.コードの簡単な解説
- まず、入力の値のパースを行う
string input = Console.ReadLine(); int N = int.Parse(input); input = Console.ReadLine(); char[] S= input.ToCharArray(); input = Console.ReadLine(); int K = int.Parse(input);
- 文字列比較で表示を分岐させる
string ans = ""; for(int i = 0; i < N; i++) { if (S[i] == S[K-1]) { ans += S[i]; } else { ans += "*"; } } Console.WriteLine(ans);
7.全コード
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { string input = Console.ReadLine(); int N = int.Parse(input); input = Console.ReadLine(); char[] S= input.ToCharArray(); input = Console.ReadLine(); int K = int.Parse(input); string ans = ""; for(int i = 0; i < N; i++) { if (S[i] == S[K-1]) { ans += S[i]; } else { ans += "*"; } } Console.WriteLine(ans); } }
8.最後に
久しぶりのブログ更新となってしまいました(^-^;