본문 바로가기
C#/프로그래머스

[프로그래머스] C# : 이상한 문자 만들기

by TODAYCODE 2021. 7. 30.
반응형

프로그래머스 코딩테스트 연습 Level 1 - 이상한 문자 만들기

 

코딩테스트 연습 - 이상한 문자 만들기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을

programmers.co.kr

문제의 핵심

1. 문제를 이해해서 구현할 수 있는가?

2. 문자열과 배열의 능숙한 사용

 


 

문제가 조금 모호하게 쓰여있어서 한번 틀렸었는데

문제를 제대로 이해하는 것이 중요하다.

 

문자열을 공백기준으로 잘라서 각각 배열에 원소로 저장해놓고

각 원소의 문자열마다 0부터 새롭게 계산하면서

짝수면 대문자, 홀수면 소문자로 표현하면 된다.

 

근데 예제에서는 공백을 포함해서 계산해도 정답이 나오고,

공백을 잘라내서 계산해도 정답이 나와서 당황하긴 했는데

아무튼 잘라진 문자열마다 계산해서 풀어주면 된다.

 

풀이법.

문자열을 Split() 메소드를 사용해서 공백기준으로 나눠서 배열에 저장한다.

배열의 각 원소마다 잘려진 문자열들이 담겨 있으므로,

for문을 돌려서 원소를 하나씩 호출하고

이중 for문을 만들어서 호출된 문자열의 문자를 하나씩 꺼낸다.

그 후에 짝수인지 홀수인지 검사해서 대소문자로 변경해주면 된다.

한글자이므로 Char형태라서

Char.ToUpper / Char.ToLower

메소드를 사용해주면 된다.

 

 

 

정답 코드

using System;

public class Solution
    {
        public string solution(string s)
        {
            string answer = "";
            // 입력된 문자열을 공백을 기준으로 잘라서 저장
            string[] temp = s.Split();
            // for문을 돌려서 문자열을 하나씩 호출함.
            for (int i = 0; i < temp.Length; i++)
            {
            // 호출된 문자열에서 차례로 문자 하나씩을 꺼냄
                for (int j = 0; j < temp[i].Length; j++)
                {
                // 0번째는 짝수 취급이므로 대문자로함
                    if (j == 0)
                    {
                        answer += Char.ToUpper(temp[i][j]);
                        continue;
                    }
                    // 짝수는 대문자로, 홀수는 소문자로 바꿈
                    if (j % 2 == 0)
                    {
                        answer += Char.ToUpper(temp[i][j]);
                    }
                    else
                    {
                        answer += Char.ToLower(temp[i][j]);
                    }
                }
                // 띄어쓰기가 전부 생략되어있으므로 문자열이 하나 끝날때마다 띄어쓰기를 넣어줌.
                // 단, 마지막에는 띄어쓰기를 추가하면 안되므로 temp.Leght-1로 설정해준다.
                if (i != temp.Length-1)
                {
                    answer += " ";
                }
            }
            
            return answer;
        }
    }

 

 

 

 

 

 

반응형

댓글