반응형
```
백준 3285번 DECODE JAVA 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 3285번 풀이
https://www.acmicpc.net/problem/3285
백준 3285번 DECODE는
난이도 쉬움 등급의 문제로서
알파벳 대문자 A 부터 Z로 이루어진 키워드
1부터 26중 하나로 만들어진 키 숫자
알파벳 대문자 A부터 Z로 이루어진 디코드 할 문자열이 주어질 때
키워드를 알파벳 26자에서 제외시킨 다음
키워드 + 남은 알파벳을 키 숫자 다음부터 출력된 문자열이 주어질 때
원래 문자열을 출력하면 되는 문제입니다.
예를 들어서
키워드
키 숫자
디코드 할 문자열
을 받았을 때
ILOVEPC
15
SDJFSFASFA
아래와 같은 테이블이 생성되고
ABCDEFGHIJKLMNOPQRSTUVWXYZ
HJKMNQRSTUWXYZILOVEPCABDFG
답은
HXBYHYVHYV
이 출력됩니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
간단하게 Deque를 사용해서
키워드를 제외한 알파벳을 Deque에 넣고
키워드를 Deque 맨 앞에 넣은 다음
키 숫자부터 시작해서 Deque에서 순서대로 뺀 알파벳을 CodeText라는 임의의 변수에 넣습니다.
그다음 CodeText를 사용해서 해당되는 인덱스에 매칭 되는 알파벳을 가지고
주어진 문자열을 해독해주면 됩니다.
import com.sun.jdi.CharValue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String keyWord = br.readLine();
int keyNum = Integer.parseInt(br.readLine());
char[] codedTextArr = br.readLine().toCharArray();
final String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Deque deque = new ArrayDeque();
for (int i=0;i<26;i++){
final char tempChar = (char) ('A' + i);
if(!keyWord.contains(String.valueOf(tempChar))){
deque.add(tempChar);
}
}
for (int i=keyWord.length()-1;i>=0;i--){
deque.addFirst(keyWord.charAt(i));
}
// 더하기
String codeStr = "";
for(int i=0;i<26-keyNum+1;i++){
codeStr += deque.pop();
}
while (!deque.isEmpty()){
codeStr = deque.removeLast() + codeStr;
}
for(char ch : codedTextArr){
System.out.print((char)(codeStr.indexOf(ch) + 'A'));;
}
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
백준 13701번 중복제거 구현해보기 (0) | 2022.01.04 |
---|---|
백준 10808번 알파벳 개수 구현해보기 (0) | 2021.12.29 |
백준 1181번 단어정렬 JAVA 구현해보기 (0) | 2021.12.25 |
백준 5598번 카이사르 암호 JAVA 구현해보기 (0) | 2021.12.16 |
백준 17285번 XORChic JAVA 구현해보기 (0) | 2021.12.16 |