https://www.acmicpc.net/problem/17300
17300번: 패턴
안드로이드 OS에는 휴대폰의 잠금을 풀기 위한 방법 중 패턴을 암호로 사용하는 방법이 있다. 3×3의 9개 점에 번호를 매겨 그중 일부로 하나의 수열을 만들었을 때, 수열에서 인접한 번호의 점을
www.acmicpc.net
접근 방법
1-9, 4-6 과 같이 연속적이지 않은 패턴들을 구별하여 하드코딩을 해주었다..
문제 풀이
- 연속적이지 않은 패턴의 쌍 8개를 구분하여 입력이 들어오면 flag를 false로 변환
- 이미 간 곳도 다시 갈 수 없고, 5-5와 같이 같은 곳에 2번도 할 수 없으니 flag를 false로 변환
- 출력
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Baekjoon.silver
{
class _17300
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int[] arr = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
bool[] check = new bool[10];
(int, int) temp;
bool flag = true;
for(int i = 0; i< n-1; i++)
{
temp = (arr[i], arr[i + 1]);
if (temp == (1, 3) || temp == (3, 1))
{
if (!check[2])
flag = false;
}
else if (temp == (1, 7) || temp == (7, 1))
{
if (!check[4])
flag = false;
}
else if (temp == (7, 9) || temp == (9, 7))
{
if (!check[8])
flag = false;
}
else if (temp == (3, 9) || temp == (9, 3))
{
if (!check[6])
flag = false;
}
else if (temp == (2, 8) || temp == (8, 2))
{
if (!check[5])
flag = false;
}
else if (temp == (4, 6) || temp == (6, 4))
{
if (!check[5])
flag = false;
}
else if (temp == (1, 9) || temp == (9, 1))
{
if (!check[5])
flag = false;
}
else if (temp == (3, 7) || temp == (7, 3))
{
if (!check[5])
flag = false;
}
//이미 간 곳 방지
else if (check[arr[i + 1]])
flag = false;
//같은 수 2번 방지
else if (arr[i] == arr[i + 1])
flag = false;
check[arr[i]] = true;
if (!flag)
break;
}
if (flag)
Console.WriteLine("YES");
else
Console.WriteLine("NO");
}
}
}
'문제 풀이 > C#' 카테고리의 다른 글
[1238] - 파티 (1) | 2022.11.24 |
---|---|
[1956] - 운동 (0) | 2022.11.23 |
[22867] - 종점 (0) | 2022.11.21 |
[11404] - 플로이드 (0) | 2022.11.19 |
[13549] - 숨바꼭질 3 (0) | 2022.11.18 |