알고리즘

프로그래밍 문제 21번 이상한 문자 만들기

DoosanBaek 2022. 9. 27. 10:16

이 문제는 프로그래머스에서 제공된 문제를 풀이한 문제이며, 저작권은 프로그래머스에게 있습니다.

언어 : Java

문제번호 : 21번

문제 : 이상한 문자 만들기

문제설명 : 

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

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

 

입출력 예시
s return
"try hello world" "TrY HeLlO WoRlD"
입출력 예시 설명

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

 

Java.solution

class Solution {
    public static String solution(String s) {
        String answer = "";

        String num[] = s.split("");

        for (int i = 0; i < s.length(); i++) {
            if (i % 2 == 0){
                answer += num[i].toUpperCase();

            }else{
                answer += num[i].toLowerCase();
            }

        }
        System.out.println(answer);
        return answer;
    }
}

답안 도출 과정: 

1. 문자열을 받을 수있는 String 타입 배열 s 에서 .split("") 을 이용해서 , 하나씩 String 타입 배열 num에 넣는다.

2. 반복문 for 문을 활용하여 s 배열의 길이만큼 for문을 반복하고, i는 0부터 시작하고 i는 1씩 증가하게 한다.

3. 조건문 if 문을 활용하여 i를 2로 나눈 나머지가 0인경우 (= 짝수) 인경우는 num배열의 [i]번째 문자를 꺼내서 toUpperCase() 를 이용해서 대문자로 만든다. 그리고 answer에 입력한다.

4. 짝수가 아닌경우 , i를 2로 나눈 나머지가 0이 아닌경우 (=홀수) 인경우는 num배열의 [i] 번째 문자를 꺼내서

toLowerCase() 를 이용해서 소문자로 만든다. 그리고 answer에 입력한다.

5. Sytem.out.print()를 이용해서 answer의 값을 찍어보고 answer로 리턴한다.

 

------메인메소드추가-------

6. 실행 메소드 (main 메소드)를 만든다. 

7. Scanner 클래스를 임포트 하고 Scanner sc  = new Scanner(Sytem.in); 을 통해 값을 찍어볼 수 있도록 한다.

8. String 타입으로 배열 s를 지역변수로 선언하고 Scanner 클래스의 메소드인 .nextLine()을 사용한다.

9. System.out.println() 을 사용해서 solution21 메소드의 s 문자열을 찍어본다.

 

실행메소드추가 / sacaner 클래스 이용해서 Try Hello Wold 찍어보기

import java.util.Scanner;
/**
 * 문제 21번 이상한 문자 만들기
 */
class Solution21 {
    public static String solution21(String s) {
        String answer = "";

        String num[] = s.split("");

        for (int i = 0; i < s.length(); i++) {
            if (i % 2 == 0){
                answer += num[i].toUpperCase();

            }else{
                answer += num[i].toLowerCase();
            }

        }
        System.out.println(answer);
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        System.out.println(solution21(s));
    }
}