알고리즘

프로그래머스 - 가운데 글자 가져오기 - 자바

Won's log 2024. 3. 25. 15:34

프로그래머스 알고리즘 문제를 풀다가 해결과정을 기록으로 남겨보았습니다. 가운데 글자 가져오기

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제와 예시는 아래와 같습니다.

 

문제를 풀기 위해 설계 과정에서

문자열을 char 배열로 변환 후 저장해야겠다고 생각하였습니다.

그래서!

 


문자/문자열(String)을 배열로 변환하는 방법 2가지를 소개합니다.

 

1. 반복문 

String s = "abcde";
char[] charS = new char [s.length()];
    for (int i=0; i<s.length(); i++) {
        charS[i] = s.charAt(i);
    }

    System.out.println("charS = " + Arrays.toString(charS));
    // charS = [a, b, c, d, e]

먼저, String 값을 저장할 char[] 배열을 선언한 후, for문으로 반복해서 값을 저장하는 방법입니다.

 

2. toCharArray()

String s = "abcde";

char[] charS = s.toCharArray();
System.out.println("charS = " + Arrays.toString(charS));
// charS = [a, b, c, d, e]

String의 toCharArray()를 사용하여 바로 char[] 배열에 저장하는 방법입니다.


다시 문제로 돌아가서

문제에 대한 설계는 다음과 같다.

1. 문자열을 char 배열로 변환 + 저장 
2. 배열 갯수가 짝수이면 /2 번째 charS[i] 가져오기 <> 홀수이면 /2 2개의 charS[i] 가져오기

 

완성 코드

class Solution {
    public String solution(String s) {
        String answer = "";
        
        // 1. 문자열을 char 배열로 변환 + 저장 
        // 2. 배열 갯수가 짝수이면 /2 번째 캐릭 가져오기 <> 홀수이면 /2 2개의 캐릭 가져오기
        
        // // 1-1. 반복문
        // char[] charS = new char [s.length()];
        // for (int i=0; i<s.length(); i++) {
        //     charS[i] = s.charAt(i);
        // }
        
        // 1-2. toCharArray
        char[] charS = s.toCharArray();
        
        // 2. 짝수&홀수 함수
        if (s.length()%2==0) {
            answer = String.valueOf(charS[s.length()/2-1]) + String.valueOf(charS[s.length()/2]);
        } else {
            answer = String.valueOf(charS[s.length()/2]);
        }
        return answer;
    }
}

 

 

*위 방법 외에도 다양한 방법이 있으니 참고만 해주세요 :)

*잘못된 정보가 있다면 댓글로 남겨주시면 더 큰 도움이 될 것 같습니다 :)