728x90
반응형
2024.09.20기준 - 브론즈1
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 원철이가 만들어낸 암호화된 단어를 복호화하여 출력하는 문제입니다.
접근 방법
- 문자열을 빈 칸을 기준으로 나눠 문자열을 검사해줍니다.
- 현재 참조하고 있는 문자와 그 다음문자를 검사하여 그 다음문자가 없다면 더미 단어로 판단합니다.
- 더미 단어가 아니라면 두 단어를 더 한 값에 복호화 n을 빼주어 기존 문자열을 출력합니다.
1. 빈 칸을 기준으로 나눠 문자열을 검사합니다.
// 빈 값을 기준으로 나뉜 문자열을 하나씩 검사합니다.
for (int j = 0; j < arr.length; j += 2) {
// 더미 문자라면
if (j + 1 >= arr.length) {
break;
// 더미 문자가 아니라면
} else {
// 복호화
num = arr[j] - 'a' + arr[j + 1] - 'a' - n;
// 0보다 작다면 26을 더 해줍니다.
if (num < 0) {
num += 26;
// 25보다 크다면 mod26을 해줍니다.
} else if (num > 25) {
num %= 26;
}
sb.append((char)(num + 'a'));
}
}
- 만약 문자가 홀 수 일때, 참조하는 인덱스의 다음 문자가 없다면 오류가 나기 때문에, 더미 문자 처리를 해줍니다.
- 복호화를 진행해 나온 수가 0보다 작다면 26을 더해주고 25보다 크다면 mod26을 해주어 문자를 찾아줍니다.
- 찾아준 문자를 출력해줍니다.
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine()); // 암호화 키
StringTokenizer st = new StringTokenizer(br.readLine());
int size = st.countTokens();
char[] arr;
int num;
for (int i = 0; i < size; i++) {
arr = st.nextToken().toCharArray();
// 빈 값을 기준으로 나뉜 문자열을 하나씩 검사합니다.
for (int j = 0; j < arr.length; j += 2) {
// 더미 문자라면
if (j + 1 >= arr.length) {
break;
// 더미 문자가 아니라면
} else {
// 복호화
num = arr[j] - 'a' + arr[j + 1] - 'a' - n;
// 0보다 작다면 26을 더 해줍니다.
if (num < 0) {
num += 26;
// 25보다 크다면 mod26을 해줍니다.
} else if (num > 25) {
num %= 26;
}
sb.append((char)(num + 'a'));
}
}
sb.append(" ");
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 18795번 이동하기 3 (0) | 2024.09.22 |
---|---|
BEAKJOON / 백준 - JAVA 13423번 Three Dots (1) | 2024.09.21 |
BEAKJOON / 백준 - JAVA 25755번 거울반사 (0) | 2024.09.19 |
BEAKJOON / 백준 - JAVA 18127번 모형결정 (0) | 2024.09.18 |
BEAKJOON / 백준 - JAVA 1043번 거짓말 (1) | 2024.09.17 |