[programmers] 대소문자 바꿔서 출력하기

J-Cheol·2023년 11월 11일
0

프로그래머스

목록 보기
15/27
post-thumbnail

문제


프로그래머스 문제링크

풀이 코드


import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        int i = 0;
        String answer = "";
        while (i < a.length())
        {
            char c = a.charAt(i);
            if (c >= 'a' && c <= 'z')
            {
                c = (char)(c - ' ');
            }
            else if (c >= 'A' && c <= 'Z')
            {
                c = (char)(c + ' ');
            }
          
            answer += String.valueOf(c);
            i++;
         
        }
        System.out.print(answer);
    }
}

리뷰


  1. 문자열을 입력받았을때 대문자가 있다면 소문자로, 소문자가 있으면 대문자로 변환하여 출력하는 문제입니다.
  2. 대소문자를 판별하기 위해 while문을 실행하였습니다.
    2-1. char c를 통해 문자열에 있는 문자 하나하나를 변환하여 주었습니다.
    2-2. char 타입은 문자를 아스키 코드로 인식하기 때문에 A = 65, a = 97, ' ' = 32(공백)인 점을 응용하였습니다.
    2-3. A를 소문자로 바꾸기 위해서는 아스키 코드 상에서 32을 더해주어야하기 때문에 32번째인 공백을 더해주어 소문자로 변환하여주었습니다.
    2-4. 이와 반대로, a를 대문자로 바꿔주기 위해서는 공백만큼 빼주어 변환하도록 하였습니다.
  3. answer에 String.valueOf를 사용하여 문자를 하나하나 붙여주어 출력하였습니다.

StringBuilder

StringBuilder를 이용하여 문제를 풀게 되면 불변성인 String을 더욱 효율적으로 사용할 수 있습니다. String.value를 여러번 호출하여 메모리 성능을 낮추는 것보다 가변성을 가진 문자열 클래스를 사용하는것이 더욱 효과적입니다.
아래는 StringBuilder를 이용하여 문제를 풀었습니다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        int i = 0;
        StringBuilder sb = new StringBuilder();
        while (i < a.length())
        {
            char c = a.charAt(i);
            if (c >= 'a' && c <= 'z')
            {
                c = (char)(c - ' ');
            }
            else if (c >= 'A' && c <= 'Z')
            {
                c = (char)(c + ' ');
            }
          
            sb.append(c);
            i++;
         
        }
        System.out.print(sb.toString());
    }
}

append를 통하여 sb에 변환된 문자를 누적하였고, toString을 통하여 문자열을 얻었습니다.

profile
신입 백엔드 개발자(JAVA, Spring Boot, MYSQL)

0개의 댓글