프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.
저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에
최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.
많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.
환경
언어 : 자바
단계 : 레벨 1단계 (입문자용)
정답률 : 82%
제목
가운데 글자 가져오기
문제 설명 및 코드
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한 조건
- s는 길이가 1 이상, 100이하인 스트링입니다.
1
2
3
4
5
6
|
class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
|
cs |
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we" |
문제 정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Solution {
public String solution(String s) {
String answer = "";
char[] charArr = s.toCharArray();
int start = (charArr.length % 2 == 1) ? charArr.length / 2 : charArr.length / 2 - 1;
int end = charArr.length / 2;
for(int i=start; i<=end; i++) {
answer += charArr[i];
}
return answer;
}
}
|
cs |
일단 toCharArray로 char 배열을 만들어줍니다.
그리고 나머지값이 1이라면 배열의 나누기2 값을, 아니면 나누기 2 값에서 -1을 start 변수에 담습니다.
end변수에는 배열의 길이 나누기 2값을 넣어준 다음
반복문으로 answer 변수에 넣어주기만 하면 됩니다.
다른사람 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Solution {
public String solution(String s) {
String answer = "";
int a,b = 0;
String c,d;
if(s.length()%2==1){
a = s.length()/2;
answer = Character.toString(s.charAt(a));
}
else{
a = s.length()/2;
c = Character.toString(s.charAt(a));
b = s.length()/2-1;
d = Character.toString(s.charAt(b));
answer = d+c;
}
return answer;
}
}
|
cs |
이 코드도 제가 푼 코드와 비슷합니다.
2로 나눴을때 나머지가 1이면 나누기 2의 값을 answer 변수에 넣어주고,
아니라면,
나누기 2의 값 -1과 나누기 2의 값을 합쳐서 answer에 넣어주는 방식입니다.
1
2
3
4
5
6
7
8
9
10
11
|
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
if(s.length()%2 == 1) sb.append(s.substring(s.length()/2,s.length()/2+1));
else {
sb.append(s.substring(s.length()/2-1,s.length()/2));
sb.append(s.substring(s.length()/2,s.length()/2+1));
}
return sb.toString();
}
}
|
cs |
이 코드는 서브스트링을 이용한 코드입니다.
위의 코드들의 동일한 조건에서 서브스트링으로 값으로 값을 가져오는 방식입니다.
반복문 필요없이 서브스트링을 이용한 방식도 신선하네요.
'Algorithm' 카테고리의 다른 글
[Java&알고리즘] 약수의 개수와 덧셈 (Level 1) (0) | 2023.03.28 |
---|---|
[Java&알고리즘] 문자열 내림차순으로 배치하기 (Level 1) (0) | 2023.03.24 |
[Java&알고리즘] 수박수박수박수박수박수? (Level 1) (0) | 2023.03.23 |
[Java&알고리즘] 없는 숫자 더하기 (Level 1) (0) | 2023.03.22 |
[Java&알고리즘] 제일 작은 수 제거하기 (Level 1) (0) | 2023.03.21 |
댓글