Algorithm/프로그래머스
[프로그래머스]연습문제 : 가운데 글자 가져오기 (level 1)
HBGB
2019. 11. 6. 09:18
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 구간이 홀수일때와 짝수일때가 다르기 때문에 가능하다.