https://www.acmicpc.net/problem/4378
키보드의 한 줄을 문자열로 받고
문자열의 인덱스를 1씩 빼줘서 버퍼에 저장한 다음 모아서 출력하도록 했다.
EOF = End of File
해당 문제에서는 입력이 여러 줄로만 이루어져 있어서
EOF을 고려해서 입력을 받아야만 했다.
덕분에 Java에서 BufferedReader로 EOF를 구현하는 방법에 대해서 배울 수 있었다.
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";
while((input = br.readLine()) != null){
...
}
}
String input을 ""로 초기화하고
while((input = br.readLine()) != null)
이런 식으로 조건을 주면
더 이상 입력이 들어오지 않을 때, input==null이 되므로 종료된다.
import java.io.*;
public class _4378 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String keyboard1 = "`1234567890-=";
String keyboard2 = "QWERTYUIOP[]\\";
String keyboard3 = "ASDFGHJKL;'";
String keyboard4 = "ZXCVBNM,./";
String[] keyboards = {keyboard1, keyboard2, keyboard3, keyboard4};
String input = "";
while((input = br.readLine()) != null){
for(int i=0; i<input.length(); i++){
char c = input.charAt(i);
if(c == ' '){
bw.write(" ");
}
else{
for(int j=0; j<keyboards.length; j++){
if(keyboards[j].contains(c+"")){
bw.write(keyboards[j].charAt(keyboards[j].indexOf(c)-1));
break;
}
}
}
}
bw.write("\n");
bw.flush();
}
}
}