COTE/programmers

[java] 이상한 문자 만들기

ihate404 2022. 5. 8. 13:37

 

 

첫번째 풀이

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package programmers;
//이상한 문자 만들기
//문자열 s는 하나 이상의 단어로 구성되어있다.각 단어는 하나 이상의 공백문자로 구분되며,
//각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수를 완성하라.
 
import java.util.Arrays;
 
public class MakeStrangeWords {
    public static String Solution(String word) {
        String[] arr = word.split("");
        System.out.println("arr : " + Arrays.toString(arr));
        StringBuffer sb = new StringBuffer();
        //StringBuilder sb = new StringBuilder();
        for(int i=0; i<arr.length; i++) {
            if(i % 2 ==0) {//짝수 인덱스일떄 
                arr[i] = arr[i].toUpperCase();
                sb.append(arr[i]);
            }else{
                arr[i].toLowerCase();
                sb.append(arr[i]);
            }
        }
        return sb.toString();
    }
    public static void main(String[]args) {
        MakeStrangeWords ms = new MakeStrangeWords();
        String sample = "try hello world"// "TrY HeLlO WoRlD"
        System.out.println(ms.Solution(sample));
    }
}
 
cs

 

이클립스에선 통과했지만...

 

ㅎㅎ 개처참

 

 


두번째 풀이 ^^

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package programmers;
//이상한 문자 만들기
//문자열 s는 하나 이상의 단어로 구성되어있다.각 단어는 하나 이상의 공백문자로 구분되며,
//각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수를 완성하라.
 
import java.util.Arrays;
 
public class MakeStrangeWords {
    public static String Solution(String word) {
        String answer = "";
        int cnt = 0//구분자
        String[]arr = word.split(""); //한글자씩 떼서 배열에 넣기(공백포함)
        
        for(String ss : arr) {//배열값 string 변수안에 넣어서 하나씩 읽기 
            if(ss.contains(" ")) {//공백일때
                cnt = 0;
            }else {
                cnt += 1;
            }
            if(cnt % 2 == 0) {
                answer += ss.toLowerCase();
            }else {
                answer += ss.toUpperCase();
            }
        }
        
        return answer;
    }
    
    public static void main(String[]args) {
        MakeStrangeWords ms = new MakeStrangeWords();
        String sample = "try hello world  "// "TrY HeLlO WoRlD"
        System.out.println(ms.Solution(sample));
    }
}
 
cs

 

공백을 포함해 배열에 넣은걸 string변수로 꺼내면서

공백인지 아닌지 체크하고

그에 따른 cnt값으로 대소문자를 결정한다

UpperCase, LowerCase 하는 경우가 바뀐게 아닌가 생각했었는데,

[t][r][y][][h][e][l][l][o][][w][o][r][l][d][][] 

샘플케이스가 이렇게 생겼다고 했을때,

t부터 읽음(: T로 리턴되어야 함)

                 -> 공백아님 -> cnt += 1

                 -> cnt % 2 = 1 % 2 != 0 이므로 

                 -> ss.toUpperCase()

 

..이런식으로 진행되는 풀이였다

생각해낸 사람 진짜 천재 만재