[programmers] 대문자와 소문자

J-Cheol·2023년 11월 13일
0

프로그래머스

목록 보기
17/27
post-thumbnail

문제


프로그래머스 문제링크

풀이 코드


class Solution {
    public String solution(String my_string) {
        String answer = "";
        int i = 0;
       
        while(i < my_string.length())
        {
            char c = my_string.charAt(i);
            if(c >= 'a' && c <= 'z')
            {
                answer = answer + (char)(c - ' ');
            }
            else if(c >= 'A' && c <= 'Z')
            {
                answer = answer + (char)(c + ' ');
            }
            i++;
        }
       
        return answer;
    }
}

리뷰


  1. 문자열 안의 대문자와 소문자를 대문자 -> 소문자, 소문자 -> 대문자로 만드는 문제입니다.
  2. replaceAll로 바꾸기에는 소문자 -> 대문자로 바꿨을 경우 전부 대문자가 되기 때문에 사용할 수 없다고 생각했습니다.
  3. 접근 방식을 아스키 코드로 생각하였습니다.
    3-1. 아래 아스키 코드 표를 첨부하였습니다.
    3-2. 대문자 아스키 코드 + 32(space)를 하게 되면 소문자로 인식되며, 소문자 아스키 코드 - 32(space)를 하게 되면 대문자로 인식됩니다.
  4. c - ' '를 하게 되면 소문자 -> 대문자로 바뀌게 되고, c + ' '를 하게 되면 대문자 -> 소문자로 바뀌게 됩니다.
    4-1. 이때 c - ' ' 과 c + ' '는 아스키 코드 숫자로 나타나게 되어 문자로 나타나게 하려면 명시적 형변환을 진행해주어야 합니다.
    4-2. 명시적 형변환 char를 진행해주어 문자열에 문자가 들어가도록 해줍니다.

아스키 코드(알파벳 대문자, 소문자, Space)

문자대문자 아스키 코드소문자 아스키 코드알파벳
A6597a
B6698b
C6799c
D68100d
E69101e
F70102f
G71103g
H72104h
I73105i
J74106j
K75107k
L76108l
M77109m
N78110n
O79111o
P80112p
Q81113q
R82114r
S83115s
T84116t
U85117u
V86118v
W87119w
X88120x
Y89121y
Z90122z
------
Space32
profile
신입 백엔드 개발자(JAVA, Spring Boot, MYSQL)

0개의 댓글