반응형 분류 전체보기505 백준 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. 백준 C# - 10866 문제를 풀기 앞서 백준에 에디터문제가 있는데 이를 먼저 풀고 푸는 것을 추천한다! 1406 - 에디터 백준 C# - 1406 +) 문제 설명,풀이 계속 시간초과가 나와서 열받은 문제 시도 풀이 방법 01 String 첫번째로 StringBuilder로 풀었는데 금방 풀려서 신나게 제출했다. 근데 계속 시간초과가 나와서 뭐가 잘못 됐나 봤더니 Stack 2개 or Linked code-piggy.tistory.com 문제풀이 문제에서 front와 back을 보자마자 LinkedList가 떠올랐다! 에디터문제를 푸면서 많이 본 유형이어서 금방 풀었다 LinkedList알아보러가기 C# - LinkedList 개념, 프로퍼티, 메서드 설명 LinkedList 이중 연결 리스트를 구현한 컬렉션 클래스이다. 노드.. 2023. 10. 4. 백준 C# - 1158 +) 문제 설명 및 풀이 문제 설명 그림에서와 같이 주어진 K와 현재 count와의 관계로 문제를 해결할 수 있다. 코드와 함께 알아보자 01 count가 len보다 작은 경우에만 반복된다. count : 현재 인덱스 len : 현재 원에 남아 있는 사람의 수 while(count < len) { } 02 (count + 1) % K == 0 조건이 참인 경우 sb에 현재 제거된 사람의 번호를 추가하고 마지막 제거된 사람이 아니면 sb에 쉼표와 공백을 추가한다. if((count +1) % K == 0) { sb.Append(queue[count]); if (count < len - 1) { sb.Append(", "); } } 03 (count + 1) % K == 0 조건이 거짓인 경우 현재 사람을 다시 원에 추가하고 len.. 2023. 10. 4. 이전 1 ··· 36 37 38 39 40 41 42 ··· 85 다음 반응형