코딩테스트/프로그래머스 level 1

[프로그래머스 level_1] 이상한 문자 만들기 for JAVA

냠냠:) 2020. 5. 12. 02:18

https://programmers.co.kr/learn/challenges?selected_part_id=6174

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 설명]

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

s return
try hello world TrY HeLlO WoRlD

입출력 예 설명

try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD 를 리턴합니다.

 

[풀이]

처음에는 원소가 홀 수이면 소문자, 짝 수이면 대문자를 넣어줘야 하기 때문에 홀 수, 짝 수를 구별하는 conv, boolean형 변수를 선언합니다.

 

s의 한 원소마다 비교할 것이기 때문에 문자열 s의 길이만큼 반복문을 선언해줍니다. 

 

만약 s.charAt(i) 원소가 " " 공백이라면 띄어쓰기 구간이므로 다음 오는 문자는 대문자가 될 것입니다.

 

그러기 때문에 conv를 true로 바꿔 주고 result에 공백을 덧붙여서 " "에 대한 반복문을 건너뛰어줍니다.

 

만약 s.charAt(i) 원소가 대문자 or소문자일 경우 upperCase, lowerCase를 통해 변환 시켜준 뒤 result에 덧붙여 줍니다.

 

마지막으로 다음 글자는 현재 문자의 대, 소의 반대일 것이므로 conv를 !연산을 해주면 됩니다.

 

[코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public String solution(String s) {
        String result = "";
        boolean conv = true;
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                conv = true;
                result += " ";
                continue;
            }
            if(conv) {
                result += (s.charAt(i)+"").toUpperCase();
            }else {
                result += (s.charAt(i)+"").toLowerCase();
            }
            conv = !conv;
        }
        return result;
    }
cs

 

반응형