안녕하세요!!
우당탕탕 개발중인
seoni입니다~
오늘도 TIL(Today I Learned) 포스팅 해볼께요!
오늘의 JAVA 비기너 문제입니다!
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/12930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
틀린 코드
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
StringTokenizer st = new StringTokenizer(s, " ");
while(st.hasMoreTokens()){
String token = st.nextToken();
char[] array = token.toCharArray();
for(int i = 0; i < array.length; i++){
if(i % 2 == 0){
array[i] = Character.toUpperCase(array[i]);
}
else{
array[i] = Character.toLowerCase(array[i]);
}
answer += array[i];
}
if(st.hasMoreTokens() == false && s.charAt(s.length()-1) != ' '){
break;
}
else
answer += " ";
}
return answer;
}
}
어쩌다보니 코드가 너무 길어졌는데...
사실 처음에 풀 때는 저렇게 접근하지 않았어요ㅠ
그냥 단순하게 s.length까지 for문 돌려서,
짝수일 때는 대문자로, 홀수일 때는 소문자로 만들어야겠다 라고 생각했었어요.
그런데 문제를 보니까 공백(" ")을 기준으로 단어가 나뉘어 있었고,
그 단어 내에서 짝수일 때와 홀수일 때를 구분해야했습니다.
저는 여기서 약간 멘붕왔어요🤯
아무리 생각해도 토큰을 이용해야 할 것 같았기 때문이죠.
그래서 저렇게 긴 코드가 나왔답니다..허허
문제는, 저거 테스트 코드 몇개 안돌아요.
왜냐하면 주어진 문자열이 "try hello world"일 수도 있지만
"try hello world "하고 공백이 들어있는 것일 수도 있거든요.
근데 도저히 위 코드로는 그 경우를 다루기 어렵더라구요.
(그래도 덕분에..토큰 공부하고 좋았습니다..)
그래서 제가 처음에 생각했던 것에서
좀 더 발전시키면 좋을 것 같았어요.
올바른 코드
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
char[] array = s.toCharArray();
int flag = 0; //짝수 홀수 구분용
for(int i = 0; i < array.length; i++){
if(array[i] == ' '){
flag = 0;
continue;
}
if(flag % 2 == 0){
array[i] = Character.toUpperCase(array[i]);
}
else{
array[i] = Character.toLowerCase(array[i]);
}
flag++;
}
answer = String.valueOf(array);
return answer;
}
}
바로 문자열 for문은 그대로 유지한채,
짝수 홀수를 구분할 수 있는 변수를 따로 두고, continue를 이용하는 방법이었습니다!
훨씬 깔끔하죠?!
오늘 삽질하느라 정말 힘들었는데,
그래도 코드를 해석하고 토큰 함수도 알게되고
유익한 시간이었습니다!
여러분도 오늘도 유익한 정보 되셨나요?!
그럼 다음 포스팅도 기대해주세요!😆
'코테 문풀 > 99club' 카테고리의 다른 글
| [99Club 1기] TIL 코딩테스트 스터디 Day 13 [JAVA + 비기너] (0) | 2024.04.07 |
|---|---|
| [99Club 1기] TIL 코딩테스트 스터디 Day 12 [JAVA + 비기너] (0) | 2024.04.07 |
| [99Club 1기] TIL 코딩테스트 스터디 Day 10 [JAVA + 비기너] (0) | 2024.04.03 |
| [99Club 1기] TIL 코딩테스트 스터디 Day 9 [JAVA + 비기너] (0) | 2024.04.02 |
| [99Club 1기] TIL 코딩테스트 스터디 Day 8 [JAVA + 비기너] (0) | 2024.04.01 |