-
[프로그래머스/코딩 기초 트레이닝/C#] 8. 문자열 돌리기 / C#의 문자열CODINGTEST/코딩 기초 트레이닝_C# 2023. 7. 6. 11:08반응형
반갑습니다!! 프로그래머스 의 코딩기초 트레이닝을 C#시작합니다!!
오늘도 따뜻한 하루 되세요~ <3
<문제>
< 풀이 >
C# 의 문자열
* C# 문자열
문자열(string)은 프로그램에서 가장 많이 쓰이는 데이타 타입 중의 하나이다. C#에서 문자열(string)은 이중부호를 사용하여 표현되며, 단일 문자(char)는 단일부호를 사용하여 표현된다.
C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, 따라서 System.String 클래스의 모든 메서드와 속성(Property)을 사용할 수 있다. 예를 들어 일정 문자열 부분만 뽑아내는 Substring() 메서드, 문자열 길이를 구하는 Length 속성 등을 모두 사용할 수 있다.
C# 문자열은 Immutable 즉 한번 문자열이 설정되면, 다시 변경할 수 없다. (주: 한번 그 값이 설정되면 다시 변경할 수 없는 타입을 Immutable Type이라 부르고, 반대로 값을 계속 변경할 수 있는 것을 Mutable Type이라 부른다) 예를 들어, 문자열 변수 s 가 있을 때, s = "C#"; 이라고 한 후 다시 s = "F#"; 이라고 실행하면, .NET 시스템은 새로운 string 객체를 생성하여 "F#"이라는 데이타로 초기화 한 후 이를 변수명 s 에 할당한다. 즉, 변수 s 는 내부적으로는 전혀 다른 메모리를 갖는 객체를 가리키는 것이다.using System; namespace MySystem { class Program { static void Main(string[] args) { // 문자열(string) 변수 string s1 = "C#"; string s2 = "Programming"; // 문자(char) 변수 char c1 = 'A'; char c2 = 'B'; // 문자열 결합 string s3 = s1 + " " + s2; Console.WriteLine("String: {0}", s3); // 부분문자열 발췌 string s3substring = s3.Substring(1, 5); Console.WriteLine("Substring: {0}", s3substring); } } }
* C# 문자열, 문자, 문자배열
문자열(string)은 문자(character)의 집합체이다. 문자열 안에 있는 각 문자를 엑세스하고 싶으면, [인덱스] (square bracket)을 사용하여 문자 요소를 엑세스한다.
예를 들어, 문자열 변수 s가 "Hello" 값을 가지고 있을 때, s[0]이라고 하면 첫번째 문자 H를, s[1]이라 하면 두번째 문자 e 를 리턴한다. 이는 문자열을 문자배열처럼 취급하는 것으로 일반 C# 배열과 마찬가지로 첫번째 요소는 [0]으로 엑세스한다.
문자배열(char array)을 문자열(string)으로 변환하기 위해서는 아래와 같이 new string(문자배열)을 사용한다.
하나의 문자는 상응하는 ASCII 코드 값을 가지는데, 예를 들어 대문자 A는 65, B는 66, Z는 90을 갖는다. 소문자는 a가 97, b가 98, ... 등을 갖는다. 하나의 문자는 이처럼 숫자값으로 표현되므로 문자에 숫자를 더하거나 빼면 다른 문자로 표현될 수 있다. 예를 들어 문자A 를 갖는 변수에 1을 더하면 66이 되어 문자 B가 된다.using System; namespace MySystem { class Program { static void Main(string[] args) { string s = "C# Studies"; // 문자열을 배열인덱스로 한문자 엑세스 for (int i = 0; i < s.Length; i++) { Console.WriteLine("{0}: {1}", i, s[i]); } // 문자열을 문자배열로 변환 string str = "Hello"; char[] charArray = str.ToCharArray(); for (int i = 0; i < charArray.Length; i++) { Console.WriteLine(charArray[i]); } // 문자배열을 문자열로 변환 char[] charArray2 = { 'A', 'B', 'C', 'D' }; s = new string(charArray2); Console.WriteLine(s); // 문자 연산 char c1 = 'A'; char c2 = (char)(c1 + 3); Console.WriteLine(c2); // D 출력 } } }
* C# StringBuilder 클래스문자열을 다루는데 중요한 클래스 중의 하나는 System.Text.StringBuilder 클래스이다. String 클래스는 위에서 설명한 대로 Immutable이기 때문에, 문자열 갱신을 많이 하는 프로그램에는 적당하지 않다. 반면 Mutable 타입인 StringBuilder 클래스는 문자열 갱신이 많은 곳에서 자주 사용되는데 이는 이 클래스가 별도 메모리를 생성,소멸하지 않고 일정한 버퍼를 갖고 문자열 갱신을 효율적으로 처리하기 때문이다.
특히 루프 안에서 계속 문자열을 추가 변경하는 코드에서는 string 대신 StringBuilder를 사용해야 한다.using System; using System.Text; namespace MySystem { class Program { static void Main(string[] args) { StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 26; i++) { sb.Append(i.ToString()); sb.Append(System.Environment.NewLine); } string s = sb.ToString(); Console.WriteLine(s); } } }
<채점결과>
<정답 코드>
using System; public class Example { public static void Main() { String s; Console.Clear(); s = Console.ReadLine(); for(int i = 0 ;i<s.Length;i++){ Console.WriteLine(s[i]); } } }
<문제 출처>
https://school.programmers.co.kr/learn/courses/30/lessons/181945
함께 즐겨요 코딩 기초 트레이닝<3
반응형'CODINGTEST > 코딩 기초 트레이닝_C#' 카테고리의 다른 글
[프로그래머스/코딩 기초 트레이닝/C#] 9. 홀짝 구분하기 / C# 의 조건문 (0) 2023.07.06 [프로그래머스/코딩 기초 트레이닝/C#] 7. 문자열 붙여서 출력하기 / C# 의 출력문 WriteLine (0) 2023.07.06 [프로그래머스/코딩 기초 트레이닝/C#] 6. 덧셈식 출력하기 / C# 의 출력문 WriteLine (0) 2023.07.06 [프로그래머스/코딩 기초 트레이닝/C#] 5. 특수문자 출력하기 / C# 이스케이프 시퀀스(Escape Sequence) (0) 2023.06.30 [프로그래머스/코딩 기초 트레이닝/C#] 4. 대소문자 바꿔서 출력하기 / C#의 String 길이,Char 의 매서드 - 대문자,소문자,기호 판별 (0) 2023.06.30