본문 바로가기
반응형

코딩테스트 준비212

프로그래머스 C# - 삼총사 +) DFS사용해서 풀기 문제를 보고 DFS로 풀었는데 제출 후 다른 사람들 코드에서는 다들 반복문을 사용해서 풀어서 답을 공유하고자 게시글을 작성하게 되었습니다 :) 알고리즘 설명DFS의 depth값이 3이 되는 경우 세가지 조합이 생긴것이므로 return해주도록 하였고 return 전에 sum의 값이 0인 경우 answer값을 증가되도록 하였다.예시[-2, 3, 0, 2, -5]코드 전문using System;using System.Linq;public class Solution { static int answer = 0; public void dfs(int idx, int depth, int sum, int[] number){ if(depth == 3) { if(su.. 2024. 6. 14.
C# - 이진 탐색 트리(Binary Search Tree) 이진 탐색 트리(Binary Search Tree)모든 노드의 왼쪽 서브트리는 해당 노드의 값보다 작은 값들만 가지고 모든 노드의 오른쪽 서브트리는 해당 노드의 값보다 큰 값들만 가진다. 최소값은 트리의 가장 왼쪽, 최대값은 가장 오른쪽에 존재한다.중위 순회(inorder traversal)노드의 값을 오름차순으로 방문한다.방문 순서재귀적으로 왼쪽 서브 트리 순회, 현재 노드를 방문(e.g. 값 출), 재귀적으로 오른쪽 서브트리 순회3 - 5 - 10 - 15 - 17 - 20 - 30 - 40 - 50전위 순회(preorder traversal)루트 노드를 먼저 방문방문 순서현재 노드 방문(e.g. 값 출력), 재귀적으로 왼쪽 서브트리 순회, 재귀적으로 오른쪽 서브 트리 순회20 - 5 - 3 - 15.. 2024. 6. 11.
백준 C# - 14891 +) 풀이 문제를 읽어보다가 원형 테이블이 생각이 나서 Deque를 사용해서 풀어야겠다는 생각이 들었다! 01 회전 함수 C#은 Library에 deque를 가져와서 사용할 수가 없다. 그래서 List를 이용해서 구현하였다. 반시계 방향(== -1)인 경우 왼쪽으로 이동시키도록 하고 시계 방향(==1)인 경우 오른쪽으로 이동시켰다. public static void turn(ref List list, int dir) { if (dir == -1) { string first = list[0]; list.RemoveAt(0); list.Add(first); } else { string last = list[list.Count - 1]; list.RemoveAt(list.Count - 1); list.Insert(0, .. 2024. 4. 15.
C# - 배열을 문자열로 바꾸는 방법 문자열 배열을 문자열로 바꾸기 위해 아래와 같이 작성했다. char[] array = answer.ToArray(); string s = array.ToString(); 그러면 아래와 같이 결과가 나온다. System.Char[] 왜 이런 결과가 나올까? ToString메서드를 사용하게 되면 배열 객체 자체를 문자열로 반환한다. 그러므로 배열의 형식 정보를 나타내는 문자열이 반환되는 것이다. 실제로 배열을 문자열로 바꾸기 위한 방법을 살펴보자 01 새로운 문자열 생성 char[] array = answer.ToArray(); string s = new string(array); 02 string.Join 사용 char[] array = answer.ToArray(); string str = string... 2024. 4. 8.
백준 C# - 1992 +) 풀이 아래 문제와 매우 유사한 문제이다. 백준 C# - 2630 +) 풀이 분할 정복 문제이다. 예제를 보면서 어떻게 분할할지 생각해보자 8 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 알고리즘 생각 부분 색종이는 code-piggy.tistory.com 분할 정복 문제이다. 8 11110000 11110000 00011100 00011100 11110000 11110000 11110011 11110011 알고리즘 생각 01 부분 색깔이 모두 같은 색상이어야 한다. 02 그렇지 않는 경우 재귀가 시작한다는 의미로 "("를 출력 .. 2024. 4. 6.
백준 C# - 14425 +) 풀이 back부분을 구현하는 것만 생각하면 되는 문제이다. 01 ToArray() ToArray()를 사용하니까 메모리 초과가 났다. int[] array = queue.ToArray(); sb.AppendLine(array.Length > 0 ? array[array.Length-1].ToString() : "-1"); break; 02 push될때 값 저장 push될때 값을 저장하면 그 값이 큐의 가장 끝 값이 된다! int last = 0; while(n>0) { n--; string[] input = Console.ReadLine().Split(); switch(input[0]) { case "push": queue.Enqueue(int.Parse(input[1])); last = int.Parse(i.. 2024. 4. 3.
반응형