이상한 문자 만들기
오늘은 "이상한 문자 만들기" 문제를 풀어보도록 하겠습니다. 바로 문제를 살펴보겠습니다.
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s | return |
"try hello world" | "TrY HeLlo WoRlD" |
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
시작 코드
public class Solution {
public string solution(string s) {
string answer = "";
return answer;
}
}
나의 풀이
public class Solution {
public string solution(string s) {
string answer = "";
int num = 0;
for(int i = 0; i < s.Length; i++)
{
answer += num % 2 == 0 ? char.ToUpper(s[i]) : char.ToLower(s[i]);
num = s[i] == ' ' ? 0 : num += 1;
}
return answer;
}
}
코드 분석
string 타입의 문자열 s가 주어지며 코드가 시작됩니다. int형 num을 0으로 초기화하여 선언하고, s의 길이까지 for문을 돌립니다. for문 내부에는 삼항연산자가 두개 존재합니다. 첫번째는 num을 2로 나눈 나머지가 0이면 s[i]를 ToUpper로 대문자로 변환시킨 다음 char타입으로 answer에 더해줍니다. 만약 false 조건이라면 ToLower로 소문자로 바꿔 저장합니다.
다음 삼항연산자를 살펴보면 s[i]가 공백이라면 0, 아니라면 num에 1을 더한 값을 num에 넣어줍니다. 최종적으로 answer값을 리턴하면서 코드는 종료됩니다.
풀이 설명
이 문제에서 요구하는 사항은 짝수번째 수는 대문자, 홀수번째 수는 소문자로 만드는 것입니다. 하지만 제한사항에서 어떻게 풀어야 하는지 더 자세하게 말해줍니다. 문자열의 총 인덱스를 기준으로 나누는 것이 아닌 공백을 기준으로 구분하여 인덱스를 구분합니다. 즉 "try hello world"가 있으면 try의 t가 0번째 인덱스, hello의 h가 각 첫번째 인덱스가 됩니다.
코드에서 나온 ToUpper()과 ToLower()는 대문자와 소문자로 변환하는 메서드이고, 문자열을 공백으로 구분한 인덱스를 기준으로 순회하며 한 단어씩 처리하므로, char타입으로 만들어 answer에 하나씩 추가하는 방식으로 만들어 줍니다.
<NEXT>
오늘은 "이상한 문자 만들기" 문제를 풀어보았습니다. 다음에는 Summer/Winter Coding(~2018)에 출제되었던 "예산" 문제를 다뤄보도록 하겠습니다. 감사합니다.
'프로그래머스 코딩테스트 문제 > Level 1' 카테고리의 다른 글
[프로그래머스] - 삼총사(C#) (0) | 2023.08.18 |
---|---|
[프로그래머스] - 예산(C#) (0) | 2023.08.16 |
[프로그래머스] - 3진법 뒤집기(C#) (0) | 2023.08.14 |
[프로그래머스] - 최대공약수와 최소공배수(C#) (0) | 2023.08.12 |
[프로그래머스] - 직사각형 별찍기(C#) (0) | 2023.08.11 |