[프로그래머스][자바(JAVA)] 가운데 글자 가져오기 -모두의개발
2022. 9. 17. 20:38ㆍ알고리즘/프로그래머스
※ 요약
- 주어진 단어의 가운데 글자를 반환하는 문제이다. 단어의 길이가 홀수면 1글자 짝수라면 2글자를 반환한다
- 풀이1
※ 참고
StringBuilder 사용법 https://quick-finger.tistory.com/21?category=1056247
1. 문자열을 더해주기 위해 StringBuilder를 정의해준다
2. 문자의 길이값을 leng에 담아주고 홀수 일경우 leng/2 를 sb에 담아 리턴해준다
-> s="abcde" 일경우 s의 길이값은 5
-> 5/2는 2(.5)
-> charAt(2) = "c"
3. 짝수일경우 i가 leng/2 -1 또는 leng /2 와 같을경우 sb에 담아 리턴해준다
-> s="qwer" 일경우 s의 길이값은 4
-> 4/2-1은1 , 4/2는 2
->charAt(1) = "w", charAt(2) = "e"

<정답코드1>
class Solution21 {
public String solution(String s) {
StringBuilder sb = new StringBuilder(); //1
int leng = s.length();
if (s.length() % 2 != 0) { // 2
sb.append(s.charAt(leng / 2));
return sb.toString();
}
for (int i = 0; i < leng; i++) { // 3
if (i == leng / 2 - 1 || i == leng / 2) {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
- 풀이2
※ 참고
풀이1보다 속도가 빠르다!
substring() 참고 https://quick-finger.tistory.com/34
1. String s 길이값만큼 leng에 정의
2. 짝수라면 substring()함수를 이용해 leng /2 -1 부터 leng/2+1 전까지 s2에 정의해준다
3. 홀수라면 leng/2 부터 leng/2 +1 전까지 s2에 정의해준다

<정답코드2>
class Solution21 {
public String solution(String s) {
int leng = s.length(); // 1
String s2;
if (leng % 2 == 0) { // 2
s2 = s.substring(leng / 2 - 1, leng / 2 + 1); // 3
} else {
s2 = s.substring(leng / 2, leng / 2 + 1); // 4
}
return s2;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바(JAVA)] 내적 -모두의개발 (0) | 2022.09.18 |
---|---|
[프로그래머스][자바(JAVA)] 없는 숫자 더하기 -모두의개발 (0) | 2022.09.18 |
[프로그래머스][자바(JAVA)] 수박수박수박수박수박수? -모두의개발 (0) | 2022.09.17 |
[프로그래머스][자바(JAVA)] 음양 더하기 -모두의개발 (0) | 2022.09.17 |
[프로그래머스][자바(JAVA)] 나누어 떨어지는 숫자 배열 -모두의개발 (0) | 2022.09.17 |