https://programmers.co.kr/learn/courses/30/lessons/12903
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 구간이 홀수일때와 짝수일때가 다르기 때문에 가능하다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스]연습문제 : 나누어 떨어지는 숫자 배열 (level 1) (0) | 2019.11.06 |
---|---|
[프로그래머스]연습문제 : 같은 숫자는 싫어 (level 1) (0) | 2019.11.06 |
[프로그래머스]연습문제 : 2016년 (level 1) (0) | 2019.11.05 |
[프로그래머스]정렬: H-Index (level 2) (0) | 2019.11.05 |
[프로그래머스]정렬 : 가장 큰 수 (level 2) (java, c++) (0) | 2019.11.05 |
댓글