728x90
https://school.programmers.co.kr/learn/courses/30/lessons/49994
소스코드
문제에 함정이있었다 처음에 2차배열로 풀었지만 양방향으로 비교를 했다.
using System;
using System.Collections.Generic;
public class Solution
{
public int solution(string dirs)
{
int answer = 0;
bool[,,,] visit = new bool[11, 11, 11, 11];
Queue<Pos> q = new Queue<Pos>();
q.Enqueue(new Pos(5, 5));
visit[5, 5, 5, 5] = true;
for (int i = 0; i < dirs.Length; i++)
{
Pos now = q.Dequeue();
int nextY = now.PosY;
int nextX = now.PosX;
switch (dirs[i])
{
case 'U':
nextY--;
break;
case 'D':
nextY++;
break;
case 'R':
nextX++;
break;
case 'L':
nextX--;
break;
}
if (nextY < 0 || nextY > 10 || nextX < 0 || nextX > 10)
{
q.Enqueue(now);
continue;
}
if (visit[nextY, nextX, now.PosY, now.PosX] == true || visit[now.PosY, now.PosX, nextY, nextX] == true)
{
q.Enqueue(new Pos(nextY, nextX));
continue;
}
visit[now.PosY, now.PosX, nextY, nextX] = true;
visit[nextY, nextX, now.PosY, now.PosX] = true;
answer++;
q.Enqueue(new Pos(nextY, nextX));
}
return answer;
}
}
class Pos
{
public int PosY;
public int PosX;
public Pos(int y, int x)
{
PosY = y;
PosX = x;
}
}
728x90
'코딩공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]Lv.2 스킬트리C# (0) | 2023.07.31 |
---|---|
[프로그래머스]Lv.0 코드 처리하기C++ (string::empty) (0) | 2023.07.31 |
※[프로그래머스]Lv.2 삼각 달팽이C# (나머지값으로 방향구하기) (0) | 2023.07.26 |
※[프로그래머스]Lv.2 마법의 엘리베이터C# (곱셈 나눗셈으로 나머지) (0) | 2023.07.25 |
[프로그래머스]Lv.2 이진 변환 반복하기 C# (0) | 2023.07.24 |