ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 스택/큐
  • 프로그래머스
  • greedy
  • Arrays.sort()
  • compareTo()
  • HashMap
  • 백준
  • DP
  • entrySet
  • git bash
  • java
  • Android
  • getOrDefault
  • reactjs
  • Comparator
  • stack
  • Queue
  • 깃
  • 깃허브
  • React
  • git
  • 코틀린
  • 프로그래머스 Lv.2
  • PriorityQueue
  • 안드로이드
  • kotiln
  • sort
  • dfs
  • BFS
  • 해시

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 시저 암호

2022. 2. 8. 16:52

문제

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr

 

풀이

단순하게 대문자인지 소문자인지 확인하고 더해놓고 기준을 넘어가면 다시 빼줬다.

class Solution {
    public String solution(String s, int n) {
        char c[] = s.toCharArray();
        // 대문자 65-90 소문자 97-122
        for (int i=0;i<c.length;i++){
            // 대문자인데 더했을때 90 넘어가면 -26
            if (c[i]>=65 && c[i]<=90){
                c[i]+=n;
                if (c[i]>90) c[i]-=26;
            }
            // 소문자인데 122 넘어가면 -26
            else if (c[i]>=97 && c[i]<=122){
                c[i]+=n;
                if (c[i]>122) c[i]-=26;
            }
        }
        return String.valueOf(c);
    }
}

 

+

다른사람풀이

알파벳 아스키코드를 몰라도 풀수 있는 방법이었다.
a-z까지 개수가 26이나 처음부턴 n에 26을 나눈 몫을 주고,
Character.isLowerCase()와 isUpperCase()로 대문자 소문자를 구별했다.

class Solution {
    public String solution(String s, int n) {
        n=n%26;
        char c[] = s.toCharArray();
        for (int i=0;i<c.length;i++){
            if (Character.isUpperCase(c[i])){
                c[i] = (char)((c[i]-'A'+n)%26+'A');
            }
            else if (Character.isLowerCase(c[i])){
                c[i] = (char)((c[i]-'a'+n)%26+'a');
            }

        }
        return String.valueOf(c);
    }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 모의고사  (0) 2022.02.11
[Java] 프로그래머스 : k번째 수  (0) 2022.02.11
[Java] 프로그래머스 : 콜라츠 추측  (0) 2022.02.07
[Java] 프로그래머스 : 3진법 뒤집기  (0) 2022.02.07
[Java] 프로그래머스 : 이상한 문자 만들기  (0) 2022.02.07
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 모의고사
    • [Java] 프로그래머스 : k번째 수
    • [Java] 프로그래머스 : 콜라츠 추측
    • [Java] 프로그래머스 : 3진법 뒤집기
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바