μλ°(Java) [λ°±μ€] 1718λ² : μνΈ
λ¬Έμ
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 + "");
}
}
μ’ λ κ°κ²°ν μ½λκ° μμ κ² κ°κΈ°λ νλ°..
μμμ νλ¦λλ‘ μμ±νλ€λ³΄λ μ΄λ κ² λλ€. π

