간단한 문제. 받는 값은 3자리 고정이며 0도 들어가지 않는다.나같은 경우, char[] 2개로 값을 받고 맨 끝자리부터 비교했다.하지만 세자리뿐이라는 쉬운 점에 따라 reverse값을 만들고 int값을 이용해 진행해도 충분하다. string[] num = sr.ReadLine().Split(); char[] num1 = num[0].ToCharArray(); char[] num2 = num[1].ToCharArray(); if (num1[2] > num2[2]) sb.AppendLine(num1[2].ToString() + num1[1].ToString() + num1[0].ToString()); else if (num1[2] < num2[2]) sb.AppendLine(num2[2].ToString(..
직관적인 문제이다.char 리스트와 int 리스트를 만든다.문자열의 첫번째 부분을 저장하고 기존의 char리스트와 비교한다.char리스트에 이미 있는 문자라면 char 리스트에 해당 문자를 저장하지 않고(중복이니까) int 리스트 해당 index 값을 1 증가시킨다.모든 문자열에 대해 반복한다..반복이 끝난 후 index값이 5이상인 char 값에 대해서 출력을 진행하고, 출력스트림이 비어있다면 항복이란 단어를 출력한다.하지만 알파벳순으로 출력하라는 말을 나중에 보게 되었고...index값이 5이상인 char값을 리스트에 따로 저장한 다음, 해당 리스트의 count동안 아스키코드가 Min인 값을 출력하고 그 값은 삭제하는 방식으로 진행하였다. char now; int n = int.Parse(sr.Rea..
아 참고로 저번에 -->가 통째로 연산자이겠거니 하고 착각했는데 후위감소 + 크기비교의 조합이었다는것을 갑자기 알았다... 생각좀 하라구~ 문제는 단순한데 이상하게 애를 되게 먹었음.하긴 뭐든 풀고나면 안단순해보이겠냐~ 세 저항 string을 받고 비교 후 그에 알맞는 값을 처리해주면 된다.문자열 비교는처음에는 구조체를 만들어서 +값 *값 나눠받고 모조리 string 플러스 연산을 하려고 했는데, 표를 보고 0의 숫자와 +값이 같음을 이용해야 함을 깨달았다.또, 단순히 모두 string 처리하여 문자열 합산을 하기에는 무리인 부분이 있는데,black은 값이 0이다.만약 black black red면 0000이 출력된다. 따라서 저항값을 int로 받아 처리하였다.result = (저항1 * 10 + 저항2..
앞뒤가 다 열려있는 괴상한 자료구조. 기존 배열에 front/back index 만들어주고 index값을 관리하였다.push_front에서 배열의 index는 음수가 될 수 없기때문에 한칸씩 뒤로 옮겨줘야 하는 상황이 발생한다.정말 피할 수 없을까..? 하고 배열 두개를 관리하는 방법도 생각했는데 그러느니 그냥 한칸씩 뒤로 옮겨줘야겠다 생각하였음.그 외는 index와 삽입정도고 별 거 없었다. switch(str[0]) { case "push_front": if (frontIndex != 0) { stack[--frontIndex] = int.Parse(str[1]); break; } for (int n = backIndex++; n != 0; n--) stack[n] = stack[n - 1]; sta..
인간의 기억력은 믿을게 못되니 에이 설마 싶은것도 적어놓아야지... 스트림 입출력 BufferedStream bs = new BufferedStream(Console.OpenStandardInput()); StreamReader sr = new StreamReader(bs); StringBuilder sb = new StringBuilder(); 입력값 읽어오기는 sr.ReadLine(); 출력값 저장하기는 sb.Append(); 나중에 Console.writeline(sb);로 한번에 출력.입력받은 String 쪼개기string[] str = sr.ReadLine().Split();원하는 char 단위로 쪼개기도 가능.string-> intint a = int.Parse(str);Array 통째로 st..
일단 문제는 둘째치고 내가 기동찬 array변환 함수를 알아냈다.매번 split하고 배열 요소마다 int.parse 취해주는거 귀찮다고 생각하고 있었는데...Array.ConvertAll(대상 배열,컨버터); 이렇게 해주면 한줄로 끝이다.ex) int[] intArray = Array.ConvertAll(stringArray,int.Parse);개꿀~~~~~~~~~~~~~~~~~~이번에는 값 받아들이는걸 bufferstream 등 스트림 입출력으로 진행해보았다. 앞서 본 사람의 코드를 통해 새로 알게된 것도 좀 써봄정답률이 50%인데 나는 꽤 헤맸다... 귀찮아서 이번에는 큐를 이용했다. 문서의 중요도는 Queue에 순서대로 저장한다.큐는 Dequeue와 Enqueue를 반복하면서 상대적으로 문서들의 순..
코드는 스택을 재활용했다. 큐 역시 C#에서 지원하지만 배열로 구현했다.스택과 다르게 앞을 가리키는 인덱스, 뒤를 가리키는 인덱스 해서 총 2개의 인덱스가 필요하다. 이는 큐가 FIFO이기 때문이다. string[] str; string[] keyword = new string[] { "push", "pop", "size", "empty", "front", "back" }; int[] queue = new int[10000]; int frontIndex = 0; int backIndex = 0; int num = int.Parse(Console.ReadLine()); for (int i = 0; i < num; i++) { str = Console.ReadLine().Split(); for (int x ..
올바른 괄호의 조건1. 시작은 (2. 끝은 )3. (와 )의 개수가 같다. 여기서 3번을 위해 (를 -1, (를 1로 바꾸어보았다. 조건은 다음과 같이 바뀐다. 1. 시작값은 -12. 끝값은 13. 괄호를 더한 값이 0이어야 한다. 하지만 더 고려할 게 있다.괄호는 아직 남아있는데 3번을 충족하는 경우이다. 이 경우에 이전 괄호는 TRUE로 매듭이 지어진 상태이고, 새로운 괄호가 시작된다.따라서 재귀함수로 구성하였다. 괄호에 따른 -1 혹은 1을 저장할 곳은 queue를 이용했다.선입선출 + 굳이 index 없이도 Dequeue로 값이 알아서 빠져줌 + 그 값을 다시 쓰지도 않는다. (더하고 끝이지)조건은 Count로 검사 static bool isRightBrackets(ref Queue queue) ..
사실 C#에는 스택이 이미 존재함... 정적 배열로 구현해봤다.굳이 값을 0으로 초기화하지 않고 index값만 잘 조정해주면 된다.받아들이는 문자열 비교는 String.CompareTo를 통해 비교하였다. 서로 같으면 0을 출력한다.* CompareTo보다는 Equals를 쓰도록 하자! string[] str; string[] keyword = new string[] { "push", "pop", "size", "empty", "top" }; int[] stack = new int[10000]; int index = 0; int num = int.Parse(Console.ReadLine()); for(int i = 0; i