본문 바로가기

코딩테스트

문자열 출력하기 LV.0

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
    }
}

문제 설명

문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

 

제한사항

1.<= str의 길이 <= 1,000,000

str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

 

입출력 예

입력 #1 HelloWorld! / 출력 #1 HelloWorld!

 

 

처음에 이 문제를 봤을땐 이게 대체 뭔소리지..? 라는 생각을 했다.

문자열 str이 주어진다는건 String str 이 주어진다는 소리고, str을 출력하라고 했으니 System.out.println()을 사용하면 되는 쉬운 문제 같았다.

어.. 그래서 이렇게 입력했다.

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        String str = "HelloWorld!";
        System.out.println(str);
        
    }
}

 

당연히 결과는 HelloWorld! 가 나온다.

하지만 이 문제에서 입출력 예를 보면 입력 출력이 있다.

그렇다면 주어진 코드에서 Scanner를 활용하여 입력 출력을 하라는 의미인데, 그렇다면 입력받을 때 문자열로 받으라는 의미고?

문자열 str이라고 했으니까 String str = sc.next();이면 되지 않을까?

왜냐하면 String a = sc.next(); 가 주어졌으니 거 코드만 바꾸면 될 것 같았다.

 

그런데 여기서 떠오르지 않은게 있었다. nextLine()이 String형을 입력받는데, next()는 nextInt()와 연관이 있는가? nextLine()과 연관이 있는가?

next()는 String형 한 단어를 읽어서 입출력 하는 메서드이고, nextLine()은 개행을 기준으로 한 줄을 읽는다고 한다.

따라서 HelloWorld! 는 한 단어로 취급된다. 공백이 없기 때문이다.

그대로 쓴다면 String str = sc.next();를 사용해도 된다.

 

그 다음은 출력을 해야하는데, Scanner라고 해도 우리가 콘솔에 입력하는게 아니라 str을 출력하는 코드를 작성해야 하므로?

System.out.println(str) 이 맞는 선택 같았다.

그런데 제한사항에 str.length가 주어졌는데, 저게 의미가 있을까? 라는 생각이 들었다.

 

그래도 제한사항이 있긴 하니까 최소한의 조건문은 달아보기로 했다.

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        
        if(true) {
            
            System.out.println(str);
            
        }
        
    }
}

 

결과적으로 잘 출력이 되었다.

 

* 조건문에 true를 썼기 때문에 의미없는 조건문이라는건 잘 알고 있었다.

다른 사람들이 작성한 코드를 살펴보는데, 굉장히 깔끔하게 푼게 있어서 참고한다.

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String str = sc.next();
        System.out.println(str);
        sc.close();
    }
}

 

Scanner를 close하는 메서드를 사용하여 깔끔하게 끝낸 모습.