Machineboy空
A074:オリオン座 본문
문제요약
https://paiza.jp/works/challenges/644/retry?tk=95552e7eb82f619d97d816c368d5b734
ログイン
ログイン画面です。|ITエンジニア・プログラマ向け総合求職・学習サイト【paiza】
paiza.jp
난이도
A Rank
풀이 포인트
- 배열 인덱스
REVIEW
왜 틀렸지.. 10개 테스트 케이스중 한 4개가 틀린다.
디버깅 중
CODE
using System;
using System.Linq;
class Program
{
static char\[,] sky;
static int h, w;
```
static void Main()
{
var hw = Console.ReadLine().Split().Select(int.Parse).ToArray();
h = hw[0];
w = hw[1];
sky = new char[h, w];
for (int i = 0; i < h; i++)
{
var line = Console.ReadLine();
for (int j = 0; j < w; j++)
sky[i, j] = line[j];
}
int answer = 0;
for (int i = 1; i < h-1; i++)
{
for (int j = 1; j < w - 3; j++)
{
// 중앙의 가로 3개의 별이 존재하는지 확인
if (sky[i, j] == '*' && sky[i, j + 1] == '*' && sky[i, j + 2] == '*')
{
answer += CountOrion(i, j);
}
}
}
Console.WriteLine(answer);
}
static int CountOrion(int i, int j)
{
int count = 1;
// 좌상 (i보다 위, j보다 왼쪽)
int upperLeft = 0;
for (int x = 0; x < i; x++)
for (int y = 0; y < j; y++)
if (sky[x, y] == '*') upperLeft++;
// 우상 (i보다 위, j+3보다 오른쪽)
int upperRight = 0;
for (int x = 0; x < i; x++)
for (int y = j + 3; y < w; y++)
if (sky[x, y] == '*') upperRight++;
// 좌하 (i보다 아래, j보다 왼쪽)
int lowerLeft = 0;
for (int x = i + 1; x < h; x++)
for (int y = 0; y < j; y++)
if (sky[x, y] == '*') lowerLeft++;
// 우하 (i보다 아래, j+3보다 오른쪽)
int lowerRight = 0;
for (int x = i + 1; x < h; x++)
for (int y = j + 3; y < w; y++)
if (sky[x, y] == '*') lowerRight++;
count *= upperLeft;
count *= upperRight;
count *= lowerLeft;
count *= lowerRight;
return count;
}
'Computer > Coding Test' 카테고리의 다른 글
B140:ネズミ駆除 OrderByDescending (0) | 2025.05.13 |
---|---|
B145:ビンゴゲームの判定 - 2중 For 문 LINQ (0) | 2025.05.12 |
A082:ショッピングモール建設計画 - DFS 기본 (0) | 2025.04.11 |
B068:チョコの分割 - 누적합 (0) | 2025.04.11 |
乗り間違い : BFS, dist[] (0) | 2025.03.31 |