문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
소스 코드&결과
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;
}
}
코드 설명
- 먼저 변수 len에 length()를 이용하여 단어의 길이를 넣어주었다. 참고로 문자열의 길이를 구할려면 .length()를 이용해준다. 배열일 경우에는 .length를 이용해준다.
- 그 다음 for문을 이용하여 len까지 반복되도록 만들어 두었다. for문 안에서 %연산자를 이용하여 단어의 길이가 짝수 인지 홀수 인지 알 수 있게 구하였다.
- if문을 사용하여 만약 단어의 길이가 짝수라면 가운데 두 글자를 출력해주어야 하므로 answer에 값에 단어의 길이/2를 해주고 인덱스가 0부터 시작하여 -1을 해주었다. 그리고 다음 글자도 출력해야 되기 때문에 len/2값을 넣어주었다.
- 그리고 가운데 두 글자를 출력하고 끝낼 수 있도록 break를 사용하였다.
- 단어의 길이가 홀수일때는 가운데 단어 하나만 구하면 되기 때문에 len/2값만 넣어주었고, 단어를 구하면 반복문이 끝날 수 있도록, break를 사용하였다.
다른 사람이 짠 코드
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
class StringExercise{
String getMiddle(String word){
return word.substring((word.length()-1)/2, word.length()/2 + 1);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args){
StringExercise se = new StringExercise();
System.out.println(se.getMiddle("power"));
}
}
다른 분이 짜신 코드를 보고 substring()이라는 함수를 알게 되었다.
substring()함수는 2가지가 있는데 그 중 첫 번째는 인자값을 하나만 받는 함수이다.
두 번째는 입력 인자값을 2개 받는 함수이다. 코드에서 쓰인 함수가 바로 이 함수이다.
String substring(int beginIndex, int endIndex)
바로 이러한 형태이다.
beginIndex 위치에서 시작하여 endIndex 전 위치까지의 값을 리턴할 수 있다.
이를 통해 단어의 길이 - 1 /2에서부터 단어의 길이/2 +1까지의 수를 구해 가운데 글자를 구할 수 있었던 것이였다.
참고 블로그 :
'Coding Test > 프로그래머스' 카테고리의 다른 글
[JAVA] 약수의 개수와 덧셈 (0) | 2023.04.04 |
---|---|
[JAVA] 문자열 내림차순으로 배치하기 (0) | 2023.04.03 |
[JAVA] 수박수박수박수박수박수? (0) | 2023.04.03 |
[JAVA] 내적 (0) | 2023.04.03 |
[JAVA] 문자열 뒤집기 (0) | 2023.03.31 |