스파르타코딩클럽/프로그래머스_Java_알고리즘 기초

[프로그래머스/Java] 가운데 글자 가져오기

예령 : ) 2022. 3. 11. 16:29

문제 설명


단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한사항


  • s는 길이가 1 이상, 100이하인 스트링입니다.

입출력 예


s return
"abcde" "c"
"qwer" "we"

풀이 코드


방법 1

class Solution {
    public String solution(String s) {
        String answer = "";
        
        // 문자열의 길이가 짝수와 홀수인 경우 구분
        if (s.length()%2 == 0) {
            answer = s.substring(s.length()/2-1, s.length()/2+1);
        } else {
            answer = s.substring(s.length()/2, s.length()/2+1);
        }
        return answer;
    }
}

문자열 추출을 위해 .substring( )이라는 함수를 사용했고 int 값은 소수점 아래를 버리므로 만약 s 문자열의 길이가 5인 경우  s.length( )/2의 실제 값은 2.5지만, 2로 생각하면 된다. 

 

방법 2

class Solution {
    public String solution(String s) {
        String answer = "";
        int s_len = s.length();
        int num = s_len/2;
        if(s_len % 2 != 0){
            answer = String.valueOf(s.charAt(num));
        }else{
            answer = s.substring(num-1,num+1);
        }
        return answer;
    }
}

if (s_len % 2 !=0) // s_len 의 나머지가 0 이 아니라면(홀수라면) {

   answer = String.valueOf(s.charAt(num));

이 방법은 String의 개념을 좀 더 공부를 해야 완전히 이해할 수 있을 것 같다!!


문자열을 추출하는 함수에는 다양한 종류가 있다.

 

IndexOf(String a) = a 의 문자의 위치 값의 숫자를 얻는다.

 

lastindexOf(String a) = a 문자를 뒤에서부터 찾아 위치 값 숫자를 얻는다.

 

substring(a, b) = a 부터 b 전까지의 위치의 문자열을 가져온다. (a 이상 b 미만의 index 값!!)

  ex) "123456".subString(2,4) 👉 34 (2에 해당하는 index 값은 3이고, 4에 해당하는 index 값은 5이므로 34 출력)

 

String substring(int index) = 문자열 index 위치부터 끝까지의 문자열 모두를 가져온다.

  ex) "개미처럼 열심히".substring(4) 👉 열심히

 

String substring(int a, int b) = 현재 문자열 객체에서 a 부터 b 직전까지 문자열

 

Char charAt(int inex) = String 문자열에서 index 번째 문자 값 한 개를 가져온다.

 

int indexOf(String str) = 문자열 str 을 찾아서 존재하면 첫째 문자 위치 값을 반환, 없으면 -1을 반환한다.


1. 해당 문자열이 있는 지 비교

if(str.indexOf(".") >=0) {

// . 이라는 값이 있다면

} else {

// . 이라는 값이 없다면

}

 

2. 문자열 수

len = str.length(); //str의 글자 길이

 

3. 부분 문자열 자르기

str = str.substring(3,7) + "9";  // str 3~7까지 자르고 뒤에 9를 붙인다.

 

4. 문자열 대체

str = StringMgr.replace(str, "\"","'");  // " ' " 로 변경

 

5. String(문자열)을 integer(숫자열)로 형 변환

int a = Integer.parasInt("123");  //Integer 과 parasInt 의 i 는 대문자 I 임!!