๋ฌธ์
Vigenere cipher์ด๋ผ๋ ์ํธํ ๋ฐฉ๋ฒ์ ์ํธํํ๋ ค๋ ๋ฌธ์ฅ (ํ๋ฌธ)์ ๋จ์ด์ ์ํธํ ํค๋ฅผ ์ซ์๋ก ๋ฐ๊พผ ๋ค์, ํ๋ฌธ์ ๋จ์ด์ ํด๋นํ๋ ์ซ์์ ์ํธ ํค์ ํด๋นํ๋ ์ซ์๋ฅผ ๋ํ๋ ๋ฐฉ์์ด๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ณํํ์ฌ ํ๋ฌธ์ ๋จ์ด์ ์ํธํ ํค์ ํด๋นํ๋ ์ซ์๋ฅผ ๋นผ์ ์ํธํํ๋ ๋ฐฉ์์ ์๊ฐํด ๋ณด์.
์๋ฅผ ๋ค์ด ์ํธํ ํค๊ฐ love์ด๊ณ , ์ํธํํ ๋ฌธ์ฅ์ด “nice day” ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ํธํ๊ฐ ์ด๋ฃจ์ด์ง๋ค.

์ ์๋ ํ๋ฌธ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ธ ‘n’์ ํด๋น ์ํธํ ํค ‘l’์ ์ํ๋ฒณ ์์๊ฐ 12 ์ด๋ฏ๋ก ์ํ๋ฒณ์์ ์์์์ ‘n’๋ณด๋ค 12์์ ๋ฌธ์์ธ ‘b’๋ก ๋ณํ๋๋ค.
๋ณํ๋ ๋ฌธ์๊ฐ ‘a' ์ด์ ์ ๋ฌธ์๊ฐ ๋๋ฉด ์ํ๋ฒณ ์์์ ๋งจ ๋ค๋ก ์์๋ฅผ ๋๋ฆฐ๋ค. ์๋ฅผ ๋ค๋ฉด ํ๋ฌธ์ ์ธ ๋ฒ์งธ ๋ฌธ์์ธ‘c’๋ ์ํ๋ฒณ ์์์ 3 ๋ฒ์งธ์ด๊ณ ๋์ํ๋ ์ํธํํค ‘v'๋ ์ํ๋ฒณ ์์ 22๋ก ‘c'์์ 22 ์์ผ๋ก ๋น๊ธฐ๋ฉด ‘a'๋ณด๋ค ํจ์ฌ ์์ ๋ฌธ์์ด์ด์ผ ํ๋๋ฐ, ‘a’์์ ๋ฌธ์๊ฐ ์์ผ๋ฏ๋ก ‘z’๋ก ๋์๊ฐ ๋ฐ๋ณต๋์ด ‘g’๊ฐ ๋๋ค. ์ฆ ํ๋ฌธ์ ๋ฌธ์๋ฅผ ์ํธํํค์ ๋ฌธ์๊ฐ ์ํ๋ฒณ ์์์ ์ฐจ์งํ๋ ์์๋งํผ ์์ผ๋ก ๋บ ๊ฒ์ผ๋ก ์ํธํํ๋ค.
ํ๋ฌธ์ ๋ฌธ์๊ฐ ๊ณต๋ฐฑ ๋ฌธ์์ธ ๊ฒฝ์ฐ๋ ๊ทธ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
์ด์ ๊ฐ์ ์ํธํ๋ฅผ ํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ๋ฌธ์ด, ๋์งธ ์ค์ ์ํธํ ํค๊ฐ ์ฃผ์ด์ง๋ค.
ํ๋ฌธ์ ์ํ๋ฒณ ์๋ฌธ์์ ๊ณต๋ฐฑ๋ฌธ์(space)๋ก๋ง ๊ตฌ์ฑ๋๋ฉฐ, ์ํธํ ํค๋ ์ํ๋ฒณ ์๋ฌธ์๋ง์ผ๋ก ๊ตฌ์ฑ๋๋ค. ํ๋ฌธ์ ๊ธธ์ด๋ ๊ณต๋ฐฑ๊น์ง ํฌํจํด์ 30000์ ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์ํธ๋ฌธ์ ์ถ๋ ฅํ๋ค.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Character> s = new ArrayList<>();
List<Character> c = new ArrayList<>();
Scanner sc = new Scanner(System.in);
String sentence = sc.nextLine();
String code = sc.next();
for(int i = 0; i < sentence.length(); i++) {
s.add(sentence.charAt(i));
}
for(int i = 0; i < code.length(); i++) {
c.add(code.charAt(i));
}
int z = 0;
char j = ' ';
char[] cd = new char[sentence.length()];
for(int i = 0; i < cd.length; i++) {
cd[i] = s.get(i);
}
for(int i = 0; i < s.size(); i++) {
if(s.size() > c.size()) {
c.add(c.get(i));
}
z = c.get(i) - 'a' + 1;
cd[i] = (char)(s.get(i) - z);
if(cd[i] < 'a') cd[i] += 26;
if(s.get(i) == ' ') cd[i] = ' ';
}
for(char e : cd) System.out.print(e + "");
}
}
์ข ๋ ๊ฐ๊ฒฐํ ์ฝ๋๊ฐ ์์ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ..
์์์ ํ๋ฆ๋๋ก ์์ฑํ๋ค๋ณด๋ ์ด๋ ๊ฒ ๋๋ค. ๐


'๐ Algorithm > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์๋ฐ(Java) [๋ฐฑ์ค] 1152๋ฒ : ๋จ์ด์ ๊ฐ์ (1) | 2023.02.06 |
|---|---|
| ์๋ฐ(Java) [๋ฐฑ์ค] 4153๋ฒ : ์ง๊ฐ์ผ๊ฐํ (1) | 2023.02.02 |
| ์๋ฐ(Java) [๋ฐฑ์ค] 1157๋ฒ : ๋จ์ด๊ณต๋ถ (2) | 2023.01.27 |
| ์๋ฐ(Java) [๋ฐฑ์ค] 1076๋ฒ : ์ ํญ (0) | 2023.01.25 |
| ์๋ฐ(Java) [๋ฐฑ์ค] 10809๋ฒ : ์ํ๋ฒณ ์ฐพ๊ธฐ (0) | 2023.01.24 |