
오늘의 알고리즘 문제는 괄호 문제이다. 대충 요약하면 괄호의 짝이 맞으면 YES 출력 안맞으면 NO 출력하는 문제이다.
이 문제는 나는 2가지 방법으로 풀어보았다. 스텍을 안쓴 그냥 계산과 스텍의 내장함수를 사용한 방법
using System.Diagnostics;
using System.Text;
namespace CodingExercise2
{
internal class Program
{
static void Main(string[] args)
{
int testCase = int.Parse(Console.ReadLine());
var sb = new StringBuilder();
for (int i = 0; i < testCase; i++)
{
string input = Console.ReadLine();
//sb.AppendLine(IsVps(input) ? "YES" : "NO");
sb.AppendLine(IsVps_stack(input) ? "YES" : "NO");
}
Console.WriteLine(sb.ToString());
}
static bool IsVps_stack(string input)
{
Stack<char> stack = new Stack<char>();
foreach (char c in input)
{
if (c == '(')
{
stack.Push(c);
}
else if (c == ')')
{
if(stack.Count == 0) return false;
stack.Pop();
}
}
if(stack.Count == 0)
{
return true;
}
return false;
}
static bool IsVps(string input)
{
int count = 0;
foreach(char c in input)
{
if (c == '(') count++;
else if (c == ')')
{
count--;
if(count <0)
{
return false;
}
}
}
if (count == 0)
{
return true;
}
return false;
}
}
}
먼저 스텍 안 쓴 방법 부터 리뷰하자면 ( 괄호가 들어오면 카운트를 올려주고 ) 괄호가 들어오면 카운트를 내려준다. 만약 카운트가 음수로 내려가면 그 순간 짝이 안맞을 것이기 때문에 바로 false를 리턴에 NO가 찍히게 해준다. 만약 카운트가 음수가 한 번도 되지 않고 카운트가 0이 되면 트루를 리턴하여 YES를 0이 아니면 폴스를 리턴하는 형식의 함수이다.
생각나는 대로 짜다가 아 우리 스택 공부 중이었지! 하고 다시 부랴부랴 스택으로도 구현했다.
스택으로 구현한 함수도 비슷한데 먼저 ( 괄호가 나오면 푸쉬를 해준다. 그 뒤 ) 괄호가 나오면 팝을 하는데 팝하기 전에 이미 카운트가 0 이라면 그 순간 짝이 안맞기 때문에 폴스를 리턴한다. 그 외의 상황에선 팝을 해준다. 그 뒤 스택의 카운트가 0이면 트루를, 아니라면 폴스를 리턴하여 리턴값에 맞게 출력한다.
오늘 공부한 코드는 되게 깔끔하게 잘 짜진거 같아서 살짝 뿌듯하다.
유니티 개인 과제를 하다 메인씬에서 2번씬으로 들어가서 미니게임을 진행하는 게임을 만들어 보고 있다.
헌데 메인씬은 16대 9이고 2번씬은 9대 16으로 제작을 하던 중 씬 연결을 하고 실제로 게임을 돌려보니 ui 해상도와 카메라 등이 다 박살이 나더라. 그래서 씬 전환을 시켜주는 부분에서 씬의 크기를 바꿔주는 코드를 적어 주었다. 그러나 유니티 상의 게임 씬에서는 해상도가 안바뀌었고, 빌드를 해야 바뀐다는 말이 있길래 빌드를 해보았는데도 해상도가 바뀌지 않았다.
결국 해결하지 못하고 튜터님께 질문한 바로는 게임할 때는 해상도를 통일 시켜주는게 좋다는 말씀을 들었다.
굳이 게임을 할 때 어느 화면에선 가로로 어느 화면에선 세로로 있다면 오히려 불편감을 준다는 말씀이었다.
그래도 굳이 해상도가 다르게 설정하고 싶다면 ui들을 앵커로 잡아주어 해상도가 바뀌어도 화면안에 있을 수 있도록 잡아주라고 하셨지만 사실상 그것도 불가능할 것이라고 말씀해주셨다.
그래서 부랴부랴 2번씬도 1번씬과 같은 해상도로 맞추기 위해 리팩토링 작업을 했고, 얼추 기본 기능은 다 완성해져 갔다.
토요일은 무기 장착 강의를 다시 보면서 찌르기 기능을 만들고, 일요일은 npc와 대화할 수 있는 기능과 시간이 된다면 오브젝트에 탑승하는 기능까지 만들어 보고 싶다.
'내일배움캠프 - TIL > 내일배움캠프 - TIL' 카테고리의 다른 글
| 내일배움캠프 19일차 - 백준 1406번 C# (0) | 2025.05.08 |
|---|---|
| 내일배움캠프 18일차 - 개인 과제(스파르타 메타버스 트러블 슈팅) (0) | 2025.05.07 |
| 내일배움캠프 16일차 - 백준 9093 (0) | 2025.05.01 |
| 내일배움캠프 15일차 - 백준 10828 팀 스크럼 (0) | 2025.04.30 |
| 내일배움캠프 14일차 - Flappy Plane 구현 해보기 (0) | 2025.04.29 |