Rylah's Study & Daily Life

[Programmers Level 1] 이상한 문자 만들기 본문

Programmers/Level 1

[Programmers Level 1] 이상한 문자 만들기

Rylah 2022. 1. 9. 14:42

https://programmers.co.kr/learn/courses/30/lessons/12930

 

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

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

programmers.co.kr

  • 이상한 문자 만들기
문제 설명

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

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s return
"try hello world" "TrY HeLlO WoRlD"
입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 

// Programmers Level 1. 이상한 문자 만들기
// https://programmers.co.kr/learn/courses/30/lessons/12930

#include <bits/stdc++.h>
using namespace std;

string solution(string s) {
	string answer = "";
	int cnt = 0;
	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] == ' ')
		{
			cnt = 0;
			answer += s[i];
			continue;
		}
		if (cnt % 2 == 0)
		{
			if (s[i] >= 'a' && s[i] <= 'z')
				answer += (s[i] - 32);
			else
				answer += s[i];
			cnt++;
		}
		else
		{
			if (s[i] >= 'A' && s[i] <= 'Z')
				answer += (s[i] + 32);
			else
				answer += s[i];
			cnt++;
		}
	}
	return answer;
}

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	string str = "try hello world";
	cout << solution(str) << '\n';
	return 0;
}
정확성 테스트
테스트 1 통과 (0.01ms, 4.32MB)
테스트 2 통과 (0.01ms, 4.33MB)
테스트 3 통과 (0.01ms, 4.33MB)
테스트 4 통과 (0.02ms, 4.25MB)
테스트 5 통과 (0.01ms, 4.28MB)
테스트 6 통과 (0.01ms, 4.27MB)
테스트 7 통과 (0.01ms, 4.32MB)
테스트 8 통과 (0.01ms, 4.32MB)
테스트 9 통과 (0.01ms, 3.66MB)
테스트 10 통과 (0.01ms, 4.26MB)
테스트 11 통과 (0.01ms, 4.33MB)
테스트 12 통과 (0.01ms, 4.27MB)
테스트 13 통과 (0.02ms, 3.66MB)
테스트 14 통과 (0.01ms, 4.27MB)
테스트 15 통과 (0.01ms, 4.32MB)
테스트 16 통과 (0.01ms, 3.66MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0