복대가리의 개발

[C#] 백준 (알고리즘)/브론즈 문제

[백준 - C#] 1100 하얀 칸

복대가리 2022. 7. 10. 00:48
728x90

문제링크

https://www.acmicpc.net/problem/1100

 

1100번: 하얀 칸

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램

www.acmicpc.net

 

문제

체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다.
가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때,
하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.

조건

시간제한 : 2초
메모리 제한 : 128 MB

입력

첫째 줄부터 8개의 줄에 체스판의 상태가 주어진다. ‘.’은 빈 칸이고, ‘F’는 위에 말이 있는 칸이다.

출력

첫째 줄에 문제의 정답을 출력한다.

 

문제풀이

이번 문제는 체스판의 상태를 입력 받고 흰색칸에 말이 몇개 있는지 확인하는 문제입니다.

저는 흰색판들의 index를 먼저 whiteMap에 저장하고 체스판의 상태를 inputMap에 입력 받아 현재 체스판의 흰색판 위에 말이 있는지 없는지를 검사하였습니다.

 

C# 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
static void Main(string[] args)
{
    StreamWriter writer = new StreamWriter(Console.OpenStandardOutput());
    StreamReader reader = new StreamReader(Console.OpenStandardInput());
 
    List<(intint)> whiteMap = new List<(intint)>();
    int start;
    for (int i = 0; i < 8; i++)
    {
        // 시작점을 정해줍니다.
        start = (i == 0 || i % 2 == 0) ? 0 : 1;
 
        // 흰색 체스판들을 찾습니다.
        for (int j = start; j < 8; j += 2)
            whiteMap.Add((i, j));
    }
 
    int[,] inputMap = new int[88];
 
    for (int i = 0; i < 8; i++)
    {
        string str = reader.ReadLine();
        for (int j = 0; j < 8; j++)
        {
            // 입력받은 값이 'F'면 1을 아니면 0을 입력받습니다.
            if (str[j] == 'F')
                inputMap[i, j] = 1;
            else
                inputMap[i, j] = 0;
        }
    }
 
    int count = 0;
    for (int i = 0; i < whiteMap.Count; i++)
    {
        // 흰색체스판 위에 값이 1이면 카운트 증가
        if (inputMap[whiteMap[i].Item1, whiteMap[i].Item2] == 1)
            count++;
    }
 
    writer.WriteLine(count);
 
    writer.Close();
    reader.Close();
}
cs
728x90