2022. 1. 19. 23:02ㆍ알고리즘/프로그래머스
<문제>
<코드 & 설명>
class Solution {
public String solution(String s) {
String answer = "";
int idx = 0;
String[] strArr = s.split("");
for(int i=0; i<strArr.length; i++) {
if((" ").equals(strArr[i])) idx = 0;
else {
if(idx%2==0) {
idx++;
strArr[i] = strArr[i].toUpperCase();
}else {
idx++;
strArr[i] = strArr[i].toLowerCase();
}
}
answer += strArr[i];
}
return answer;
}
}
#라인4
문자열 인덱스를 구분할 변수를 선언한다.
#라인6
입력받은 문자열을 split()을 활용해서 한 글자씩 String배열에 담는다.
#라인8, 9
for문을 통해 공백을 먼저 처리한다.
문자열 중에서 공백을 만나면 idx를 0으로 초기화 한다.
그래야 각 단어마다 정확한 짝수, 홀수번째를 구분할 수 있다.
#라인11 ~ 13
만약 공백이 아니라면 이 단어가 짝수번째인지 홀수번째인지 계산한다.
짝수번째면 대문자로 변경하고(toUpperCase()) idx++를 한다.
#라인14 ~ 16
홀수번째면 소문자로 변경하고(toLowerCase()) idx++를 한다.
여기까지 한 글자를 처리하는 과정이다.
#라인19, 22
여기까지 한 글자 처리를 완료하면 answer 변수에 담는다.
이런식으로 문자열 s를 처리하면 answer를 리턴한다.
<다른 방법>
class Solution {
public String solution(String s) {
String answer = "";
String[] str = s.split("");
int idx = 0; //인덱스
for(int i=0; i<str.length; i++){
if(str[i].equals(" ")){ //띄어쓰기 있다면
idx = 0; //인덱스 0 초기화
}
else if(idx % 2 == 0){ //idx가 짝수면
str[i] = str[i].toUpperCase(); //대문자로 변경
idx++; //idx 증가
}
else if(idx % 2 != 0){ //idx가 홀수면
str[i] = str[i].toLowerCase(); //소문자로 변경
idx++; //idx 증가
}
answer += str[i];
}
return answer;
}
}
1. s를 하나식 읽어오기 위해 String 배열에 s 를 넣어주었습니다.
2. 띄어쓰기마다 인덱스를 초기화해야하므로 idx 변수를 만들어주고 for문을 생성합니다.
3. String 형은 == 사용시 null 참조 오류가 발생할 수 있으므로 equals로 비교하고 공백을 찾습니다.
공백이 있다면 idx는 0으로 초기화 합니다.
4. idx가 짝수이면 toUpperCase(); 함수로 대문자로 변경하고 idx가 홀수이면 toLowerCase(); 함수로 소문자로 변경합니다.
이후 idx를 증가시켜 띄어쓰기 이후 홀, 짝을 비교할 수 있도록 합니다.
5. for문 루프가 한번식 돌기 전마다 str[i]를 answer 에 적용합니다.
6. 이런식으로 계속 루프가 돌면 문제에서 원하는 문자가 answer에 저장되고 answer을 return 합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
알고리즘 : 프로그래머스 : JAVA : 자연수 뒤집어 배열로 만들기 (0) | 2022.01.19 |
---|---|
알고리즘 : 프로그래머스 : JAVA : 자릿수 더하기 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 제일 작은 수 제거하기 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 정수 제곱근 판별 (0) | 2022.01.19 |
알고리즘 : 프로그래머스 : JAVA : 콜라츠 추측 (0) | 2022.01.19 |