실제로 sc.nextLine()을 호출하면 남아 있는 개행 문자(Enter 키)를 읽어들이게 되어 빈 문자열이 반환됩니다. 이것이 왜 그런지에 대해 이제 정확하게 설명드리겠습니다.

sc.nextInt()는 정수 값을 읽어들이고, 개행 문자(Enter 키)는 읽지 않습니다. 따라서 입력 버퍼에는 개행 문자가 남아있습니다. 그리고 sc.nextLine()은 개행 문자를 만날 때까지 문자열을 읽어들이는데, 개행 문자를 만나면 그 위치까지만 읽고 그 이후의 개행 문자를 남겨둡니다.

즉, 첫 번째 sc.nextLine()을 호출하면 입력 버퍼에 있는 개행 문자(Enter 키)를 읽어들이고 남겨둔 빈 문자열을 반환하게 됩니다. 그리고 그 다음부터는 실제 입력된 문자열을 정상적으로 읽어들이게 됩니다.

따라서, 코드에서 한 칸을 띄우고 sc.nextLine()을 호출하면 첫 번째 줄의 개행 문자를 처리하여 빈 문자열을 반환하고, 그 다음 줄부터 실제 문자열 입력을 받을 수 있게 됩니다.