본문 바로가기
반응형

코딩테스트 준비211

C# - 수식의 표기법(전위, 중위, 후위) 전위 표기법(PreFix) 연산자가 먼저 나오고, 그 뒤에 해당 연산자가 적용될 때 피연산자가 나온다. 예 : +AB 중위 표기법(InFix) 일반적으로 사용되는 수학 표기법이다. 연산자가 피 연산자 사이에 위치하고 괄호를 통해 연산자의 우선순위를 표현한다. 예 : A+B 후위 표기법(PostFix) 연산자가 나중에 오고 그 전에 해당 연산자가 적용될 때 피연산자가 나온다. 연산자 우선순위가 명확하므로 괄호가 필요없다. 예 : AB+ 2023. 10. 20.
백준 C# - 17298 +) 풀이 시간초과 문제를 보고 어 쉽네? 이렇게 풀다가 시간초과가 나왔다. int n = int.Parse(Console.ReadLine()); string line = Console.ReadLine(); string[] token = line.Split(' '); int[] A = new int[n]; StringBuilder answer = new StringBuilder(); for (int i = 0; i < n; i++) { A[i] = int.Parse(token[i]); } int[] NGE = new int[n]; for (int i = 0; i < n; i++) { int max = -1; for (int j = i + 1; j < n; j++) { if (A[i] < A[j]) { max = A.. 2023. 10. 17.
백준 C# - 10799 +) 풀이 풀이 open변수는 '('의 갯수, piece변수는 잘린 쇠막대기의 총 개수 01 '('인 경우 open변수를 증가시켜 새로운 쇠막대기의 시작을 표시한다. if (c == '(') open++; 02 ')'인 경우 쇠막대기가 끝난 것을 표시하기 위해 open을 감소시키고 끝났으므로 조각이 됐으니까 piece를 증가시킨다. else if (c == ')') { open--; piece++; } 03 레이저인 경우 레이저로 인해 현재 쇠막대기들이 잘리므로 piece에 갯수를 증가시킨다. else if (c == '+') { piece += open; } 코드 전문 using System; using System.Collections.Generic; using System.Linq; using System.T.. 2023. 10. 15.
백준 C# - 17413 +) 풀이 풀이 크게 태그와 태그가 아닌 부분을 나누어서 생각하면 금방 풀린다. 01 태그 부분 if (c == ''); } // isTag가 true인 경우 순서대로 넣음 else if (isTag) { answer.Append(c); } 02 태그 아닌 부분 공백을 만나기전까지 workStack에 넣은 다음 공백을 만난 경우 뒤집어서 answer에 추가 else if (c == ' ') { while (workStack.Count > 0) answer.Append(workStack.Pop()); answer.Append(' '); } else { workStack.Push(c.ToString()); } 03 마지막 출력 반복문을 끝내고 마지막으로 workStack이 비어있지 않은 경우 뒤집어서 answer에 추.. 2023. 10. 15.
백준 C# - 1753 +) 풀이 단계 설명 우선순위 큐로 많이 푸는 것 같은데 일단 그래프로 풀어지나? 하고 풀어봤더니 통과가 됐다! 문제는 다익스트라를 이용해야하는 문제였다. 푸는 순서 1. Edge 클래스 간선 정보를 담기 위한 클래스이다. class Edge { public int To { get; } public int Weight { get; } public Edge(int to, int weight) { To = to; // 간선의 도착 정점 Weight = weight; // 간선의 가중치 } } 2. 그래프 만들기 01 정점, 간선 갯수 입력 받기 string[] input = Console.ReadLine().Split(); int v = int.Parse(input[0]); // 정점의 개수 int e = int.Parse(in.. 2023. 10. 9.
C# - 다이나믹 프로그래밍(DP) 다이나믹 프로그래밍 메모리를 적절히 사용하여 수행 시간 효율성을 향상 시키는 최적화 기법중 하나이다. 큰 문제를 작은 부분 문제로 나누어 해결하며 이미 계산된 작은 문제의 결과를 메모리에 저장(메모제이션)하여 중복 계산을 피하는 방식으로 동작한다. 메모제이션(Memoization)이란? 한 번 계산한 결과를 메모리 공간에 메모하는 기법이다. 같은 문제를 다시 호출하면 메모했던 결과를 그대로 가져온다. 값을 기록해 놓는다는 점에서 캐싱(Cahcing)이라고도 한다. 다이나믹 프로그래밍이기 위한 조건 2가지 1) 최적 부분 구조 : 큰 문제를 작은 문제로 나눌 수 있어야 한다. 2) 중복되는 부분 문제 : 동일한 작은 문제를 반복적으로 해결할 수 있어야 한다. 다이다닉 프로그래밍 크게 두 가지 구현 방식으로.. 2023. 10. 8.
반응형