[JAVA] 코딩 테스트 입력 구분 - charAt(), split()

SHORTCUT

    반응형

    0. Scanner 대신 BufferedReader !

    - BufferedReader 는 버퍼를 이용하여 한번에 데이터를 입력하기 때문에 메모리 관리가 더욱 용이하다.

    - 입력받는 값이 많고, 테스트 케이스(tc)가 많은 경우 Scanner보단 BufferedReader를 활용하자.

    br.readLine() 로 사용한다.

     

     

    1. 띄어쓰기(구분자) 존재 : split()

    입력값

    /** 1. 숫자 입력 */
    1		// test-case
    2		// M 행
    4		// N 열
    1 14 55 66	//i번째 행 값
    2 45 56 45	//j번째 행 값
    
    /** 2. 문자 입력 */
    A C C D		//i번째 행 값
    B F A D 	//j번째 행 값

     

    방법

    - 띄어쓰기로 구분되어 있는 경우, StringTokenizer도 가능하나, 따로 선언하기 귀찮으니 Stirng의 split() 메소드를 사용하자.

    - br.readLine().split(" ") : 원하는 구분자(" ". "/")를 기준으로 String을 짤라 배열에 삽입한다.

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    //int형은 Integer.parseInt() 로 형변환을 시킨다.
    int tc = Integer.parseInt(br.readLine());
    int M = Integer.parseInt(br.readLine());	//행
    int N = Integer.parseInt(br.readLine());	//열
    
    //2*4 배열로 들어온 값을 저장하기 위한 배열	
    for (int i = 0 ; i < M ; i++){					//행
    	String token[] = br.readLine().split(" ");	//한 줄을 읽어와서 4칸짜리 배열에 삽입
        
        for (int j = 0 ; j < N ; j++ ){				//열
        	map[i][j] = token[j];					//해당 배열의 0~3번째 인덱스 값을 처리
        }
    }
    
    
    /** 문자 입력 */
    //Integer.parseInt 변환 없이 String에 넣거나 (char) 캐스팅 하여 사용한다

     

     

     

    2-1. 띄어쓰기 없음 : charAt()

    입력값

    1		// test-case
    2		// M 행
    4		// N 열
    1951		//i번째 행 값
    9981 		//j번째 행 값

     

    방법

    - 구분자가 없으니, Stirng의 charAt() 메소드를 사용하자.

    - text.charAt(i) : 해당 문자열의 i번째 인덱스 값을 char 형으로 반환한다.

    - 만약 숫자가 입력되었을 경우, '0' 을 빼주어 유니코드 값이 아닌 int형으로 바꾸어야 한다.

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    //int형은 Integer.parseInt() 로 형변환을 시킨다.
    int tc = Integer.parseInt(br.readLine());
    int M = Integer.parseInt(br.readLine());	//행
    int N = Integer.parseInt(br.readLine());	//열
    
    //2*4 배열로 들어온 값을 저장하기 위한 배열	
    for (int i = 0 ; i < M ; i++){				//행
    	String input = br.readLine();			//입력된 값 String 저장
        
        for (int j = 0 ; j < N ; j++ ){			//열
        	map[i][j] = input.charAt(j) - '0';		//해당 문자열의 인덱스 값 int형 변환(-'0')
        }
    }
    
    // 1 9 5 1
    // 9 9 8 1 
    
    
    /** 문자 입력 */
    //charAt()하면 char형태로 변환된다. 그냥 사용한다.

     

     

     

    2-2. 띄어쓰기 없음 : toCharArray();

    입력값

    1		// test-case
    2		// M 행
    4		// N 열
    1951		//i번째 행 값
    9981 		//j번째 행 값

     

    방법

    - 또 다른 방법은 입력받은 String의 각 자리를 char 배열에 저장시키는 toCharArray() 를 사용하는 것이다.

    - char input[] = br.readLine().toCharArray() : 입력 값을 자동으로 나누어 char 배열에 저장한다.

    - 잊지마라. readLine()이 String으로 읽어와도, toCharArray()의 반환값은 char 배열이다.

    - 만약 숫자가 입력되었을 경우, '0' 을 빼주어 유니코드 값이 아닌 int형으로 바꾸어야 한다.

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    //int형은 Integer.parseInt() 로 형변환을 시킨다.
    int tc = Integer.parseInt(br.readLine());
    int M = Integer.parseInt(br.readLine());	//행
    int N = Integer.parseInt(br.readLine());	//열
    
    //2*4 배열로 들어온 값을 저장하기 위한 배열	
    for (int i = 0 ; i < M ; i++){				//행
    	char charInput[] = br.readLine().toCharArray();	//자동으로 char 배열 변환 저장
        
        for (int j = 0 ; j < N ; j++ ){			//열
        	map[i][j] = charInput[j] - '0';			//숫자로 변환하기 위해 -'0'
        }
    }
    
    // 1 9 5 1
    // 9 9 8 1 
    
    
    /** 문자 입력 */
    //charAt()하면 char형태로 변환된다. 그냥 사용한다.

     

     

    반응형

    댓글

    Designed by JB FACTORY