백준 4378 자바 - 트ㅏㅊ;

손찬호·2024년 6월 26일
0

알고리즘

목록 보기
71/91

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();
       }
   }
}
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글

관련 채용 정보