본문 바로가기

Algorithm/Programmers

Level 1: 가운데 글자 가져오기, 짝수 홀수 판단과 배열 인덱싱

이 문서의 내용

    더보기

    문자열의 가운데 문자를 반환하는 함수를 작성합니다. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

    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]);
        }
    }
    코드 비고
    Line 4 toCharArray() 문자열 String을 char[]로 캐스팅합니다.
    Line 5 문자열이 단일 문자로 구성된 경우 단일 문자로 구성된 경우 별도 처리할 것이 없습니다.
    Line 6 문자열이 짝수인 경우 문자열이 짝수라면 가운데 두 문자를 리턴합니다.
    Line 7 문자열이 홀수인 경우 문자열이 홀수라면 배열의 중앙 인덱스가 저장하는 문자를 리턴합니다.

    문제 풀이: 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 인자에 필요한 계산식을 구합니다.