더보기
문자열의 가운데 문자를 반환하는 함수를 작성합니다. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
Number에 대한 짝수 홀수 판단은 % 연산자를 사용합니다.
int odd = 5;
int one = (odd % 2);
int even = 6;
int zero = (event % 2);
배열의 중앙 인덱스는 배열의 길이 / 2입니다. 짝수 배열의 중앙 인덱스가 존재하지 않습니다. 문제에서는 가운데 두 글자를 반환하도록 요구합니다.
int odds[] = new int[] { 1, 2, 3, 4, 5 };
int oddsCenter = (odds.length / 2);
int evens[] = new int[] { 1, 2, 3, 4, 5, 6};
int evensCenterLeft = (evens.length / 2) - 1;
int evensCenterRight = (evens.length / 2);
문제 풀이: 짝수 홀수 판단과 배열 인덱싱
문자열 String 타입은 char[] 타입으로 캐스팅 할 수 있습니다. 문자열을 배열로 만들어 문제를 해결합니다.
class Solution {
public String solution(String s) {
int len = s.length();
char[] chars = s.toCharArray();
if (1 == len) return s;
else if (0 == len % 2) return String.format("%c%c", chars[(len / 2) - 1], chars[len / 2]);
else return String.format("%c", chars[len / 2]);
}
}
코드 | 비고 | |
단일 문자로 구성된 경우 별도 처리할 것이 없습니다. | ||
문자열이 짝수라면 가운데 두 문자를 리턴합니다. | ||
문자열이 홀수라면 배열의 중앙 인덱스가 저장하는 문자를 리턴합니다. |
문제 풀이: substring을 사용하는 방법
문자열을 배열로 처리하지 않고 인덱스 연산만으로 substring합니다. 인자 beginIndex endIndex는 문자열 길이에 따라서 다음 규칙을 갖습니다.
- 문자열의 길이가 1일 때 substring(0, 1)
- 문자열의 길이가 2일 때 substring(0, 2)
- 문자열의 길이가 3일 때 substring(1, 2)
- 문자열의 길이가 4일 때 substring(1, 3)
- 문자열의 길이가 5일 때 substring(2, 3)
class Solution {
public String solution(String s) {
int len = s.length();
return s.substring((len - 1) / 2, (len / 2) + 1);
}
}
요구하는 규칙에 따라서 substring 인자에 필요한 계산식을 구합니다.
'Algorithm > Programmers' 카테고리의 다른 글
Level 1: 나누어 떨어지는 숫자 배열, Stream의 filter()와 sorted() (0) | 2023.11.30 |
---|---|
Level 1: 같은 숫자는 싫어, 배열의 연속된 중복 Element 제거 (0) | 2023.11.30 |
Level 1: 폰켓몬, 배열의 중복 제거 (0) | 2023.11.30 |
Level 0: n 번째 원소부터 배열 자르기 (0) | 2023.11.22 |
Level 0: 정규식 사용하여 문자열을 공백으로 구분하기 (0) | 2023.11.22 |