ねむーの日記~AtCoderな日々~

福岡に住むプログラミング好きのブログです!

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.はじめに

今回も、プログラミング言語C#を使用しています。

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.最後に

久しぶりのブログ更新となってしまいました(^-^;