반응형
- 코드 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WordSearch : MonoBehaviour
{
// 단어 찾기를 위한 2D 배열
char[,] wordGrid = {
{ '가', '나', '다', '라', '마' },
{ '바', '사', '아', '자', '차' },
{ '카', '타', '파', '하', '거' },
{ '너', '더', '러', '머', '버' },
{ '서', '어', '저', '처', '커' }
};
// 주어진 단어를 찾는 함수
bool FindWord(string word)
{
int rows = wordGrid.GetLength(0);
int cols = wordGrid.GetLength(1);
// 모든 셀을 순회하면서 단어 찾기 시도
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
// 단어의 첫 글자와 일치하는 셀을 찾으면 시작
if (wordGrid[i, j] == word[0])
{
// 각 방향에 대해 검사
for (int direction = 0; direction < 8; direction++)
{
int rowChange = GetRowChange(direction);
int colChange = GetColChange(direction);
// 단어 길이만큼 순회하면서 검사
int k;
for (k = 1; k < word.Length; k++)
{
int newRow = i + k * rowChange;
int newCol = j + k * colChange;
// 배열을 벗어나면 검사 중지
if (newRow < 0 || newRow >= rows || newCol < 0 || newCol >= cols)
break;
// 현재 위치의 문자가 단어와 일치하지 않으면 검사 중지
if (wordGrid[newRow, newCol] != word[k])
break;
}
// 단어가 찾아졌다면 true 반환
if (k == word.Length)
return true;
}
}
}
}
// 단어를 찾지 못한 경우 false 반환
return false;
}
// 주어진 방향에 따른 행 변화량 반환
int GetRowChange(int direction)
{
switch (direction)
{
case 0: return -1; // 위
case 1: return -1; // 오른쪽 위 대각선
case 2: return 0; // 오른쪽
case 3: return 1; // 오른쪽 아래 대각선
case 4: return 1; // 아래
case 5: return 1; // 왼쪽 아래 대각선
case 6: return 0; // 왼쪽
case 7: return -1; // 왼쪽 위 대각선
default: return 0;
}
}
// 주어진 방향에 따른 열 변화량 반환
int GetColChange(int direction)
{
switch (direction)
{
case 0: return 0; // 위
case 1: return 1; // 오른쪽 위 대각선
case 2: return 1; // 오른쪽
case 3: return 1; // 오른쪽 아래 대각선
case 4: return 0; // 아래
case 5: return -1; // 왼쪽 아래 대각선
case 6: return -1; // 왼쪽
case 7: return -1; // 왼쪽 위 대각선
default: return 0;
}
}
void Start()
{
// 테스트를 위한 단어 찾기
string testWord = "가자"; // 테스트할 단어
bool wordFound = FindWord(testWord);
// 결과 출력
if (wordFound)
{
Debug.Log(testWord + " 단어를 찾았습니다!");
}
else
{
Debug.Log(testWord + " 단어를 찾지 못했습니다.");
}
}
}
반응형