본문 바로가기
Algorithm/프로그래머스

[프로그래머스]연습문제 : 가운데 글자 가져오기 (level 1)

by HBGB 2019. 11. 6.

https://programmers.co.kr/learn/courses/30/lessons/12903

 

코딩테스트 연습 - 가운데 글자 가져오기 | 프로그래머스

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s return abcde c qwer we

programmers.co.kr

 

 

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
    public String solution(String s) {
 
        StringBuilder sb = new StringBuilder();
        
        for (int i = (s.length() - 1/ 2; i <= s.length() / 2; i++) {
            sb.append(s.charAt(i));
        }
 
        return sb.toString();
    }
}
Colored by Color Scripter
 

 

substring을 이용한 답안

1
2
3
4
5
6
class Solution {
    public String solution(String s) {
 
        return s.substring((s.length() - 1/ 2, s.length() / 2 + 1);
    }
}
Colored by Color Scripter

 

 

 

TIP1

String을 이어붙이는 것보다, StringBuilder를 쓰는게 훨! 씬! 빠르다

 

 

TIP2

int i = (N - 1) / 2; i <= N / 2;

 

이게 가능한 이유는 N / 2 와 N의 관계가 다음과 같기 때문이다. 

N / 2 0 1 2 3 4 ...
N 1 2 3 4 5 6 7 8 9 ...

 

EX)

N이 3 일때

START = (N - 1) / 2 = (3 - 1) / 2 = 1

END   = N / 2  = 2 / 2 = 1

 

N이 4 일때

START = (N - 1) / 2 = (4 - 1) / 2 = 1

END   = N / 2  = 4 / 2 = 2

 

즉, N과 N - 1의 N / 2 구간 홀수일때와 짝수일때가 다르기 때문에 가능하다. 

댓글