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()
..이런식으로 진행되는 풀이였다
생각해낸 사람 진짜 천재 만재