문제
문제 풀이
해당 문제를 보고 원형큐 자료구조를 이용하면 좋겠다고 생각하고 접근하였다. 배열에 a - z , A- Z 까지의 값을 담아두고 입력되는 string 값과 배열에 있는 문자값을 비교하여 맞을 때 나오는 (index + n) % arr.length 로 처리하였음.
나의 답안
public static String solution(String s, int n) {
StringBuffer sb = new StringBuffer();
char[] big = new char[26];
char[] small = new char[26];
char smallEng = 'a';
char bigEng = 'A';
for (int i = 0; i < small.length; i++) {
small[i] = smallEng;
smallEng++;
}
for (int i = 0; i < big.length; i++) {
big[i] = bigEng;
bigEng++;
}
for (int i = 0; i < s.length(); i++) {
char space = ' ';
if (s.charAt(i) == space) sb.append(" ");
for (int j = 0; j < small.length; j++) {
if (s.charAt(i) == small[j]) {
sb.append(small[(j + n) % small.length]);
break;
} else if (s.charAt(i) == big[j]) {
sb.append(big[(j + n) % big.length]);
break;
}
}
}
return sb.toString();
}
다른 답안
다른분들은 아스키 코드 번호를 이용해서 이미 정렬이 된 문자를 사용하는 방식으로 하였다.
class Solution {
public String solution(String s, int n) {
String answer = "";
for(char ch : s.toCharArray()) {
if(ch==' ') {
answer += ch;
}else if(ch>='a'&& ch<='z'){
answer += (char)('a' + (ch+n-'a')%26);
}else {
answer += (char)('A' + (ch+n-'A')%26);
}
}
System.out.println(answer);
return answer;
}
}
'Programmers 문제풀이 > Lv.1' 카테고리의 다른 글
[1차] 비밀지도 (0) | 2023.03.18 |
---|---|
최소직사각형 (0) | 2023.03.17 |
예산 (0) | 2023.03.16 |
3진법 뒤집기 (0) | 2023.03.16 |
최대공약수와 최소공배수 (0) | 2023.03.16 |