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

[프로그래머스] Lv.0 대소문자 바꿔서 출력하기(Java)

선SEON 2023. 10. 17. 16:09

1. 문제

벌써 헷갈리는 문제가 나오다니,,,,

 

2. 제출 답안

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        //값 받기
        String answer = "";
        
        for(int i = 0; i < a.length(); i++){
            //한 글자씩 char 형으로 비교(문자열 반환)
            char b = a.charAt(i);
            
            //소문자는 대문자로 대문자는 소문자로
            if(Character.isLowerCase(b)){
                answer += Character.toUpperCase(b);
            }
            else {
                answer += Character.toLowerCase(b);
            }
        }
        System.out.println(answer);
    }
}

 

 

charAt 함수
String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수이다.

String sample = "abc";
char target = sample.charAt(0);

위처럼 String 변수에서 사용할 수 있으며,
charAt(i)
i 자리에는 int 형 변수를 넣어서 원하는 위치의 문자를 가져올 수 있다.

 

Character 함수

   - isUpperCase() : 문자가 대문자인지 판단(true 또는 false)

   - isLowerCase() 문자가 소문자인지 판단(true 또는 false)

   - isDigit() : 문자가 숫자인지 판단 (true 또는 false)

   - toUpperCase(): 문자를 대문자로 변환

   - toLowerCase()문자를 소문자로 변환

 

3. 다른 풀이

1) toCharArray  활용

: 문자열을 한 글자씩 쪼개서 char타입의 배열에 집어넣어주는 메서드

import java.util.*;

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

        //Stack <Character> stack = new Stack <> ();

        for(Character c : a.toCharArray()){
            if(Character.isUpperCase(c)){
                //stack.push(Character.toLowerCase(c));
                answer += Character.toLowerCase(c);
            }
            else if(Character.isLowerCase(c)){
                //stack.push(Character.toUpperCase(c));
                answer += Character.toUpperCase(c);
            }
        } 
        System.out.println(answer);
    }
}

 

2) 아스키코드 활용

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        for(int i=0; i<a.length(); i++) {
            char c = a.charAt(i);
            if(Character.isUpperCase(c)) {
                System.out.print((char)(c+32));
            }
            else {
                System.out.print((char)(c-32));
            }
        }
    }
}

 

3) Stringbuilder 활용

: String 을 만드는 객체

import java.util.Scanner;

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

        StringBuilder sb = new StringBuilder();  // StringBuilder 객체 생성

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (Character.isUpperCase(c)) {  // 대문자인 경우
                sb.append(Character.toLowerCase(c));  // 소문자로 변환하여 StringBuilder에 추가
            } else if (Character.isLowerCase(c)) {  // 소문자인 경우
                sb.append(Character.toUpperCase(c));  // 대문자로 변환하여 StringBuilder에 추가
            } else {  // 알파벳이 아닌 경우
                sb.append(c);  // 그대로 StringBuilder에 추가
            }
        }

        System.out.println(sb.toString());  // StringBuilder를 String으로 변환하여 출력
    }
}