프로그래머스

[프로그래머스]가운데 글자 가져오기(java) / substing / charAT / String.valueOf() / 트러블 슈팅

Young_Han 2024. 9. 30. 10:31

문제 설명

 


 

[소스 코드 & 결과]

 

class Solution {
    public String solution(String s) {
        String answer = "";

        // 단어의 길이
        int length = s.length();


        // 단어 길이가 짝수일 시 두 개 출력
        if (length% 2 == 0) {
            answer = s.substring((length/2)-1, (length/2)+1);
        } else {
        
        // 단어가 홀수일 시 한 개 출력
            answer = s.substring((length/2), (length/2)+1);
        }
        return answer;
    }
}

 

 

[설명]

  • length() 함수를 사용하여 단어의 길이를 length변수로 넣었다.
    • 배열의 길이를 출력할 경우에는 length 함수를 사용한다. 예) arry.length
  • if 문을 사용하여 단어의 길이가 홀짝인 경우에 따른 값을 출력했다.
  • substring을 사용하여 특정 문자열을 잘라냈다. 
    • substring(int startIndex, int endIndex)는 startIndex(포함)부터 endIndex(불포함)까지 문자열을 리턴한다.

 


[다른 분이 짠 코드]

class Solution {
    public String solution(String s) {
        String answer = "";
        int len = s.length();
        for(int i = 0; i < len; i++){
            if(len % 2 == 0){ // 단어의 길이가 짝수
                answer += s.charAt(len/2 - 1); 
                answer += s.charAt(len/2); break;
            }else{ //단어의 길이가 홀수
                answer += s.charAt(len/2); break;
            }
        }
        return answer;
    }
}
  • substring대신 charAt을 사용하여 문자열을 잘랐다.
  • +=를 사용해서 문자열을 합쳤다.

 

이 코드를 보고 for문이 없어도 코드가 정상적으로 작동할 것 같아 삭제해 봤다.

 

[수정한 값]

class Solution {
    public String solution(String s) {
        String answer = "";
        int len = s.length();
        
        // 단어의 길이가 짝수
            if(len % 2 == 0){ 
                answer += s.charAt(len/2 - 1); 
                answer += s.charAt(len/2);
            }
            else{ 
        // 단어의 길이가 홀수
                answer = s.charAt(len/2); 
            }
        return answer;
    }
}

[결과]

  • 결과에는 문제가 없었다.

트러블 슈팅

원인

홀수인 경우에는 += 가 필요 없이 않을까 하는 생각에 지우고 프로그램을 다시 실행해 봤다.

 

[결과]

 

추측

incompatible types error

  • String asnwer값에 char형이 들어가서 호환하지 않는 것이다.

 

시도

  • 따라서 String.valueOf()를 사용하여 char를 String으로 변환했다.

 

[결과]

  • 정상적으로 잘 작동했다.

 

요약

1. 단어의 길이가 홀수인 경우에는 값이 하나이기때문에 "+=" 대신 "="를 넣고 실행하니 에러가 발생했다.

2. incompatible types error로 String asnwer값에 char형이 들어가서 호환하지 않는 것으로 추측했다.

3. 따라서 String.valueOf()를 사용하여 char를 String으로 변환했다.

4. 정상적으로 잘 작동되었다.

 

 

 

 

[출처] [rei050r:티스토리]

https://rei050r.tistory.com/86 

 

[JAVA] 가운데 글자 가져오기

문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 제한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입

rei050r.tistory.com