-
[Java] Scanner 클래스의 nextInt(), nextLine()의 활용, 백준 2675번 문제 풀이Language/Java, Kotlin 2022. 1. 11. 10:00728x90
package baekjoon; import java.util.Scanner; public class P2675 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); int T = scan.nextInt(); // 테스트 케이스의 개수 int[] R = new int[T]; String[] testCase = new String[T]; for (int i = 0; i < T; i++) { R[i] = scan.nextInt(); testCase[i] = scan.nextLine(); // 문자열 예시: 5 abc } scan.close(); for (int i = 0; i < T; i++) { String temp = testCase[i]; for (int j = 1; j < temp.length(); j++ ) { for (int k = 0; k < R[i]; k++) System.out.print(temp.charAt(j)); } System.out.println(); } } }
https://www.acmicpc.net/problem/2675
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
백준 문제 2675번을 풀면서 알게 된 사실이다.
문제를 보면 문자열 S가 공백으로 구분되어 입력한다.
이 사실을 중요하게 생각해야한다.
Java Scanner 클래스의 nextInt(), next() 등과 nextLine()은 그 역할이 비슷해 보여도 매우 큰 차이점 하나가 있다.
next(), nextInt() 등
띄어쓰기를 기준으로 입력받는다
스페이스 바
nextLine()
줄바꿈을 기준으로 입력받는다
엔터
여기서 아래와 같이 코드를 짜면
// 띄어쓰기로 R과 testCase가 구분된다. for (int i = 0; i < T; i++) { R[i] = scan.nextInt(); // 테스트 케이스의 반복 횟수 R testCase[i] = scan.nextLine(); // 반복할 문자열 }
5 abcd
라고 입력했을 때
R[i]에 5가 들어간다.
5 다음에 띄어쓰기가 있으니까,
testCase[i]에는 abcd가 입력된다.
왜냐하면 nextLine()은 줄바꿈 전까지 입력한 것을 받기 때문에, 5가 입력되고 남은 abcd가 들어간다.
Java Scanner 클래스의 이러한 특성을 알고 있으면 문제를 쉽게 풀 수 있다.
복습:
next(): 띄어쓰기
nextLine(): 줄바꿈
띄어쓰기하고 남은 것은 nextLine()으로 입력받는다.
728x90'Language > Java, Kotlin' 카테고리의 다른 글
[안드로이드][Java] ...does not have a NavController... 해결법 (0) 2022.11.23 [Java] 백준 자바로 할 때 체크리스트 (0) 2022.01.10