가운데 글자 가져오기
xgetMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다.
예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다.
단어 길이의 절반인 위치를 구해 짝수면 앞자리 글자를 같이 가져와 반환하고, 홀수는 그자리의 글자를 반환했다.
xxxxxxxxxx
class StringExercise {
String getMiddle(String word) {
int wl = word.length() / 2;
if (word.length() % 2 == 0)
return "" + word.charAt(wl - 1) + word.charAt(wl);
else
return "" + word.charAt(wl);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
StringExercise se = new StringExercise();
System.out.println(se.getMiddle("power"));
}
}
이건 다른 사람의 풀이인데, 3항 연산자를 이용해 단어가 주어지지 않았을 때 공백을 출력하고, 단어가 주어지면 String
클래스의 substring
메소드를 이용해서 가운데 글자를 return했다.
예를들어 5글자 단어이면 반환값이 word.substring(2, 3)
이 되어서 2번에서 3번 사이, 즉 2번째 글자(순번은 0부터 시작하니까 1부터 세자면 3번째 글자, 즉 가운데)가 나오게 되고, 6글자 단어이면 반환값이 word.substring(2, 4)
가 나와서 2번에서 4번 사이, 즉 2번, 3번 글자(1부터 세면 3번째, 네번째 글자)가 나오게 된다.
알고리즘을 작성할 때 코드가 짧다고해서 무조건 좋다고 생각하진 않는다. 하지만 아래와 같이 작성하면 짧기도 하거니와 알아서 홀수는 한 글자만 나오게되고, 짝수는 두 글자만 나오게 되니까 굳이 나처럼 짝수일 경우와 홀수일 경우를 고려하지 않아도 된다는 점이 더 편해보였다.
x
class StringExercise {
String getMiddle(String word) {
return word != null ? word.substring((word.length() - 1) / 2, (word.length() + 2) / 2) : "";
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
StringExercise se = new StringExercise();
System.out.println(se.getMiddle("power"));
}
}
'공부 > algorithm' 카테고리의 다른 글
[programmers] 문자열 내림차순으로 배치하기 (0) | 2018.05.21 |
---|---|
[programmers] 삼각형출력하기 (0) | 2018.05.21 |
[programmers] 약수의 합 (0) | 2018.05.21 |
[programmers] 스트링을 숫자로 바꾸기 (0) | 2018.05.21 |
[programmers] 피보나치 수 (0) | 2018.05.21 |
댓글