ALGORITHM/PROGRAMMERS

[프로그래머스] 이상한 문자 만들기 (연습문제)

0298 2020. 12. 13. 00:41

programmers.co.kr/learn/courses/30/lessons/12930?language=cpp

 

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

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

programmers.co.kr

2020-12-13


C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <vector>
#include <iostream>
using namespace std;
 
string solution(string s) {
    string answer = "";
    int idx = 0;
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == ' '){
            answer += ' ';            
            idx = 0;
            continue;
        }
        else if(idx % 2 == 0)
            answer += toupper(s[i]);
        else 
            answer += tolower(s[i]);
        
        idx++;
    }
    return answer;
}
cs

JAVA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
    public String solution(String s) {
        String answer = "";
        int idx = 0;
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                answer += " ";
                idx = 0;
                continue;
            } else if(idx % 2 == 0) {
                answer += String.valueOf(s.charAt(i)).toUpperCase();
            } else {
                answer += String.valueOf(s.charAt(i)).toLowerCase();
            }
            idx++;
        }
        return answer;
    }
}
cs

 

2년전쯤 C++로 코딩 테스트 공부를 했었는데, 그 때 시도했다가 아마 오늘처럼 문제를 잘못읽어서 틀린 이유를 모르고 넘어갔었던 것 같다.

 

분명 제한사항에 아래와 같이 단어를 기준으로 인덱스를 판단해야한다고 써있음에도 불구하고 문자열 전체로 생각하고 짰어서 예제 값만 맞고 실제 테스트에서는 틀리게 나왔었던 것이다.

 

문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.