본문 바로가기
Algorithm

[Java&알고리즘] 이상한 문자 만들기 (Level 1)

by GoodDayDeveloper 2023. 4. 6.
반응형

 

프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.

 

저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에

최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.

 

많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.

 

 

 

 

 

 

 

환경

언어 : 자바

단계 : 레벨 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을 증가시켜서

 

짝수면 대문자, 홀수면 소문자를 반환시켰습니다.

 

 

 

 

반응형

댓글