C# 대문자와 소문자 - 프로그래머스 [Lv.0] 코딩 테스트 입문

출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120893

 

 

나의 풀이

using System;
using System.Text;

public class Solution {
    public string solution(string my_string) {

        string upperStr = my_string.ToUpper();
        string lowerStr = my_string.ToLower();
        
        var sb = new StringBuilder();
        for(int i = 0; i < my_string.Length; i++)
        {
            if(my_string[i] == upperStr[i])
                sb.Append(lowerStr[i]);
            else
                sb.Append(upperStr[i]);
        }
        
        return sb.ToString();
    }
}

- 생각없이 풀고보니 쓰레기 배열 두 개랑 연산이 들어가서 성능면에서 적절치 못했다.

 

다른사람 풀이 1

using System;

public class Solution {
    public string solution(string my_string) {
        string answer = "";

        foreach (var it in my_string)
        {
            if ('a' <= it && it <= 'z')
                answer += it.ToString().ToUpper();
            else
                answer += it.ToString().ToLower();
        }

        return answer;
    }
}

- char는 ASCII코드 index 기준으로 대소 비교가 가능하다.

 

다른사람 풀이 2

using System;
using System.Text;

public class Solution {
    public string solution(string my_string) 
    {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < my_string.Length; i++) 
        {
            if (char.IsLower(my_string[i])) 
                sb.Append(char.ToUpper(my_string[i]));        
            else 
                sb.Append(char.ToLower(my_string[i]));
        }

        return sb.ToString();
    }
}

- char는 char.IsUpper(c) 와 char.IsLower(c) 메서드를 제공한다. 

 

따로 확장 메서드는 제공하지 않는다. c.IsUpper()로 쓰면 오류남.

오버로드된 메서드를 루프에서 사용하면 될듯.

 

 

댓글

Designed by JB FACTORY