전에 푼 문제랑 같은 메커니즘이다. string sentence = Console.ReadLine(); int[] alphabet = new int[26]; for (int i = 0; i < sentence.Length; i++) alphabet[sentence[i] - 'a']++; StringBuilder sb = new StringBuilder(); foreach (int a in alphabet) sb.Append(a + " "); Console.WriteLine(sb);
딱히 뭐가 없다.처음 받는 숫자는 필요없다.두번째 받는 배열은 string[]에 Split()하여 받은 뒤, covertAll 하여 int[]에 저장한다.세번째로 받은 값을 int[] 요소와 하나씩 비교하면서 count값을 증가할지를 결정한다. BufferedStream bs = new BufferedStream(Console.OpenStandardInput()); StreamReader sr = new StreamReader(bs); sr.ReadLine(); string[] stringNumber = sr.ReadLine().Split(); int[] number = Array.ConvertAll(stringNumber, int.Parse); int vp = int.Parse(sr.ReadLine()..
list 생성해두고 10개의 값을 하나씩 받고 42로 나눈다음, Contain()을 이용해 list에 해당 값이 있는 지 검사한다.없으면 저장한다.이후 list.count 출력. BufferedStream bs = new BufferedStream(Console.OpenStandardInput()); StreamReader sr = new StreamReader(bs); List input = new List(); int value; for(int i = 0; i
굉장히 쉬운 문제라 내가 이걸 여기 적어야 할까? 하고 생각했지만모든 문제는 소중하고 귀하다는 내 가치관에 입각하여 포스팅하기로 했다. 앞으로 "Hello World!"를 출력하라는 문제가 나와도 다 포스팅해버릴것이다. string[]에 입력받으면서 '-' 기준으로 Split한다.string[]의 모든 요소 맨 앞자리만 출력한다. StringBuilder sb = new StringBuilder(); string[] algorithmName = Console.ReadLine().Split('-'); foreach (string s in algorithmName) sb.Append(s[0].ToString()); Console.WriteLine(sb);
삽질 오지게 한 문제... 시도랄것도 전에, 입력값 분리하고 int 리스트로 만들려고 했는데 그러면 처리할게 너무 많았던건지 오류나고 난리였다.하지만 애초에 계산도 비교도 하지 않기 떄문에 int형으로 변환 할 필요 자체가 없었음(ㅎㅎ빡췸) 시도 1) Reverse는 진짜 뒤집고 Delete는 진짜 삭제했다 : 시간초과시도 2) Reverse는 bool isReverse 여부만 조정, Delete는 진짜 삭제했다 : 시간초과시도 3) Reverse는 bool값, Delete는 index front, back만 조정 : 틀렸습니다(??) reverse와 delete 매커니즘 : 출력방식 : 출력할 값 마다 뒤에 ,를 붙여 출력하게 했고, 모든 출력이 끝난 후 마지막이 ,이라면 ]로 그 값을 대체하였다. 그..
쉬워서 딱히 뭐라 집을 게 없다. 그냥 alphabet int 26개짜리 만들고 모두 -1로 초기화한 뒤 string 받아서 -1이면 index 입력하는 if문 만들고 출력하게 함 C# string sentence = Console.ReadLine(); int[] alphabet = new int[26]; int index; for (int i = 0; i < alphabet.Length; i++) alphabet[i] = -1; for (int x = 0; x < sentence.Length; x++) { index = sentence[x] - 'a'; if (alphabet[index] == -1) alphabet[index] = x; } StringBuilder sb = new StringBuild..
초기 선언 : alphabet[16] int 배열, int max, bool isOne = true; string으로 값을 받고 string.Length만큼 아래의 반복문을 진행한다. [alphabet에 따라 값을 int배열에 저장할것임]아스키 코드 상 'Z'보다 작거나 같다면 대문자, 그 외(else)는 소문자다. 이에 맞춰 인덱스를 조정해주고 alphabet 값을 1씩 증가시켜준다. 이제 max값을 찾아야 한다. 배열의 MAx값을 찾아주는 것 + IndexOf로 찾아내면 정말 편리하겠지만 문제는 max값을 가지는 배열의 index가 여러개일 때 ?를 출력해야 한다는 점이다. 그래서 다 해주었다. 처음에 alphabet[0]을 max에 넣어주고 25번 max와 비교한다.1. max보다 클 경우 : is..
문장을 저장할 string, count를 추가할지 여부를 결정하는 bool isRight, 이미 나온 알파벳을 저장해두는 list로 구성된다.문장 내 모든 char에 대해서 아래를 반복한다 : alreadyExisted 초기화, isRight true로 초기화 후.... alreadyExisted에 이 값이 존재하는가?Yes : 이전 문자가 지금과 다른가? : isRight : false로 바꾸고 breakNo : alreadyExisted에 추가* index가 범위를 벗어날 경우 - alreadyExisted에 존재하고 이전 문자를 조사하는데 그게 첫번째 문자였다면 예외발생: continue; 반복문의 마지막에 isRight를 검사하고 여부에 따라 count 변경 BufferedStream bs = n..
try ~ catch 문장의 소중함을 알게 된 문제였다.크게 두가지 방법으로 가능한 듯 한데, 1. count는 0부터 시작, 크로아티아 알파벳에 해당하는 조합이 나오면 pointer를 +1 시킴2. count는 length부터 시작, 크로아티아 알파벳에 해당하는 조합이 나오면 count를 -1 시킴 (or -2) 나는 1번으로 풀었다. try~catch를 배우기나 했지 실제로 안써봤던 건데, 이런 상황에서 index가 array보다 튀어나오는 경우 요긴하게 쓰겠더라... char[] croatia = Console.ReadLine().ToCharArray(); int count = 0; for (int pointer = 0; pointer < croatia.Length; pointer++) { try ..
딱히 별 생각을 가지고 안해서..n개의 파일 이름에 대해서 글자 하나씩 끌고와서 비교하고, 같으면 한글자 append, 다르면 ? append 하였음 int n = int.Parse(sr.ReadLine()); string s = null; string[] fileName = new string[n]; for (int x = 0; x < n; x++) fileName[x] = sr.ReadLine(); for(int y = 0; y < fileName[0].Length; y++) { s = null; for(int z = 1; z < n; z++) { if (fileName[0][y] != fileName[z][y]) { s = "?"; break; } } if (s == null) s = fileNam..