문제 1. 시저 암호

문제 설명

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 “AB”는 1만큼 밀면 “BC”가 되고, 3만큼 밀면 “DE”가 됩니다. “z”는 1만큼 밀면 “a”가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 조건

  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

입출력 예

s n result
“AB” 1 “BC”
“z” 1 “a”
“a B z” 4 “e F d”

답안

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Solution {
static String Lower = "abcdefghijklmnopqrstuvwxyz";
static String Upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public String solution(String s, int n) {
String answer = "";

for (int i = 0; i < s.length(); i++){
answer += moveAlpabet(s.charAt(i), n);
}

return answer;
}

public char moveAlpabet(char a, int n){

// 공백이면 공백리턴
if(a == ' '){
return ' ';
}

// 소문자배열 대문자배열 선언 => static으로 변경
// String Lower = "abcdefghijklmnopqrstuvwxyz";
// String Upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String comparaFlag = "";
int idx = 0;

// 소문자 대문자 비교 후 리턴
if(Character.isUpperCase(a)){
comparaFlag = Upper;
} else {
comparaFlag = Lower;
}

// 해당위치 저장 후 n영역 증가
idx = comparaFlag.indexOf(a);
idx += n;

// 만약 위치가 처음으로 돌아가야한다면
if(idx > comparaFlag.length() - 1){
return comparaFlag.charAt(idx - comparaFlag.length());
}

return comparaFlag.charAt(idx);
}
}

Lower변수와 Upper 변수는 static으로 선언해두고 메모리의 손실 최소화

참고. static 무엇인가?

문제 2. 핸드폰번호가리기

문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

  • phone_number는 길이 4 이상, 20이하인 문자열입니다.

입출력 예

phone_number return
“01033334444” “*******4444”
“027778888” “*****8888”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public String solution(String phone_number) {
String answer = "";
answer = changePhoneNumber(phone_number);
return answer;
}

public String changePhoneNumber(String phone_number){
//phone_number는 길이 4 이상, 20이하인 문자열이므로 flag 선언
String flag = "********************";
String phoneNumber = "";
phoneNumber = flag.substring (0, phone_number.length()-4) + phone_number.substring(phone_number.length()-4, phone_number.length());
return phoneNumber;
}
}