본문 바로가기

코딩테스트

대소문자 바꿔서 출력하기 LV.0

문제설명

영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

 

제한사항

1 <= str의 길이 <= 20

str은 알파벳으로 이루어진 문자열입니다.

 

입출력 예

입력 #1

aBcDeFg

출력 #1

AbCdEfG

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
    }
}

 

대문자를 소문자로, 소문자를 대문자로 바꾸는 메서드를 아는게 가장 중요한 문제같다.

 

String으로는 배열형태처럼 순서대로 문자를 훑은 다음 대소문자를 구분할 수 없다.

즉 String str = "aBcDeFg" 라면 이런 형태로 바꿔줘야한다.

 

{"a", "B", "c", "D", "e", "F", "g"}

 

배열형태이면서 한 문자씩 배열에 집어넣는 다음, for문으로 돌려가면서

조건문에다가 얘가 대문자라면 소문자로 바꾸는 메서드를 사용하고, 그 외엔 대문자로 바꾸는 메서드를 사용한다면

어떤 대소문자가 들어와도 바꿀 수 있을 것이다.

 

한 단어씩 나누는거니까 char형 배열로 바꿔보자.

char[] str = a.toCharArray()

toCharArray() 메서드는 String 문자형을 char형으로 바꿔서 한글자씩 배열에 집어넣는다.

 

for문으로 str을 처음부터 끝까지 읽어야하니까

for(int i = 0; i<str.length; i++) {

}

 

이런 형태가 될 것이다.

 

이 문제에서 가장 중요하다고 생각하는건 대소문자를 구분하는 메서드를 알아야 하는것이라고 말했는데,

결론부터 말하면 기억하질 못했다. Lower, Upper인것까진 알았는데..

 

char형 배열에 들어있는 한 글자가 대소문자인지 가리는 메서드는

Character.isUpperCase() 와 Character.isLowerCase() 라고 한다.

이는 boolean형으로 true와 false를 반환한다.

 

그렇다면 대소문자로 바꿔주는 메서드는 당연히

Character.toUpperCase() 와 Character.toLowerCase()일 것이다.

 

그럼 반복문 안의 조건문은 이런 형태로 적을 수 있다.

만약 str 배열 안 0번째 글자가 대문자(혹은 소문자) 라면

str 배열의 0번째 글자 = Character.toLowerCase(str 배열의 0번째 글자) 혹은

str 배열의 0번째 글자 = Character.toUpperCase(str배열의 0번째 글자)

그 외에는 이 반대를 적어주면 되겠다.

if(Character.isUpperCase(Str[i]) {

	str[i] = Character.toLowerCase(str[i]);
    
} else {

	str[i] = Character.toUpperCase(str[i]);
    
}

 

그리고 for문을 나오기 전에 출력하고 싶다면 System.out.print(str[i]); 를 입력해주고

나온 후에 출력하고 싶다면 System.out.println(str); 을 써주면 된다.

주의할점은 for문 안에서 출력할 땐 System.out.println()을 적으면 안된다. 반복할때마다 줄바뀜이 발생해서 큰일난다.

 

정리하면

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        char[] str = a.toCharArray(); // 중요 1
        
        for(int i = 0; i<str.length; i++) {
        
        	if(Character.isUpperCase(str[i]) { // 중요 2
            
            	str[i] = Chracter.toLowerCase(str[i]); // 중요 3
            
            } else {
            
            	str[i] = Chracter.toUpperCase(str[i]);
            
            }
        
        }
        
        System.out.println(str);
        
        sc.close();
        
    }
}

 

정답이다!

'코딩테스트' 카테고리의 다른 글

덧셈식 출력하기 LV.0  (0) 2025.06.04
특수문자 출력하기 LV.0  (0) 2025.06.04
문자열 반복해서 출력하기 LV.0  (0) 2025.06.02
a와 b 출력하기 LV.0  (0) 2025.06.02
문자열 출력하기 LV.0  (0) 2025.06.01