프로그래머스 - 시저암호

Terror·2024년 9월 20일
0

풀이

        StringBuilder sb = new StringBuilder(s);
        List<Character> results = new ArrayList<>();
        for ( char c : sb.toString().toCharArray() ) {
            int ascii = c+0;
            //대문자
            if (ascii >= 65 && ascii <= 90) {
                //만약 아스키 코드값에 + n을 더했더니 대문자를 초과할경우
                if (ascii + n >= 91){
                    //만약 Z = 90이 들어왔다고 가정 n =4
                    // 65 A 3
                    // 66 B 2
                    // 67 C 1
                    // 68 D 0
                    char convertedAlphabet = (char) ((ascii - 65 + n) % 26 + 65);
                    results.add(convertedAlphabet);
                } else {
                    results.add((char) (ascii+n));
                }
            //소문자
            } else if (ascii >= 97 && ascii <= 122){
                if (ascii + n >= 123){
                    char convertedAlphabet = (char) ((ascii - 97 + n) % 26 + 97);
                    results.add(convertedAlphabet);
                } else {
                    results.add((char) (ascii+n));
                }
            //그 외 (공백)
            } else {
                results.add(c);
            }
        }
        StringBuilder resultsStringBuilder = new StringBuilder();
        for ( char c : results ) {
            resultsStringBuilder.append(c);
        }
        return resultsStringBuilder.toString();

깨달은점

  1. StringBuilder에서의 toString을 사용하면 StringBuilder 내부적으로 Buffer에 [”hello”,” “,”world”]가
    저장되고 이걸 toString으로 꺼내면 그 문자들이 그대로 나온다 hello world
  2. char 형태의 문자에에 +0을 해주면 ascii 코드값으로 바뀐다

주소

https://school.programmers.co.kr/learn/courses/30/lessons/12926?language=java

profile
테러대응전문가

0개의 댓글