프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.
저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에
최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.
많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.
환경
언어 : 자바
단계 : 레벨 1단계 (입문자용)
정답률 : 74%
제목
이상한 문자 만들기
문제 설명 및 코드
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
1
2
3
4
5
6
7
|
class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
|
cs |
입출력 예
s | return |
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
문제 정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Solution {
public String solution(String s) {
String answer = "";
int count = -1;
for(int a=0; a<s.length(); a++){
if(s.charAt(a) == ' ') count = -1;
else count++;
answer += (count%2==0) ?
Character.toString(s.charAt(a)).toUpperCase() : Character.toString(s.charAt(a)).toLowerCase();
}
return answer;
}
}
|
cs |
우선 카운트 변수를 별도로 만들고,
문자열 변수 s의 길이로 반복문을 돌렸습니다.
만약에 s가 공백이라면 -1을 반환하고 아니라면 count변수를 1을 증가 시켰습니다.
answer 문자열 변수에 count가 짝수라면 대문자, 아니라면 소문자를 반환하도록 하였습니다.
다른사람 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Solution {
public String solution(String s) {
String answer = "";
int cnt = 0;
String[] array = s.split("");
for(String ss : array) {
cnt = ss.contains(" ") ? 0 : cnt + 1;
answer += cnt%2 == 0 ? ss.toLowerCase() : ss.toUpperCase();
}
return answer;
}
}
|
cs |
여기서는 문자열 변수 s를 split으로 공백을 제거한 후 array란 배열에 담았습니다.
배열을 반복하여 공백이라면 0을 아니면 1을 증가시켜서
짝수면 대문자, 홀수면 소문자를 반환시켰습니다.
'Algorithm' 카테고리의 다른 글
[Java&알고리즘] 삼총사 (Level 1) (0) | 2023.04.11 |
---|---|
[Java&알고리즘] 예산 (Level 1) (0) | 2023.04.10 |
[Java&알고리즘] 3진법 뒤집기 (Level 1) (0) | 2023.04.06 |
[Java&알고리즘] 같은 숫자는 싫어 (Level 1) (0) | 2023.04.04 |
[Java&알고리즘] 행렬의 덧셈 (Level 1) (0) | 2023.03.31 |
댓글