본문 바로가기
Algorithm/CodeUp

[Java] codeup 1018

by dani0312 2023. 5. 1.

[기초-입출력] 시간 입력받아 그대로 출력하기

 

문제 설명

어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보자

 

입력예시

3:16

 

출력예시

3:16

 

풀이

방법1. sc.next()만을 이용하여 풀기 (출제의도는 아님)

이 문제의 출제 의도와 관계없이 답을 구한다면 아래와 같이 sc.next()만을 사용하여 이 문제를 풀 수도 있다. "3:16"의 입력을 단순히 단일 String값으로 읽어들인 후 출력해도  문제가 되지 않기 때문이다. 

nextLine()으로 해도 무방하다.

String strArr = sc.next();
System.out.println(strArr);

참고)

Scanner 메서드 차이 sc.next() vs sc.nextLine() 

sc.next() :공백 문자를 기준으로 다음 토큰을 읽어온다. 따라서 입력 스트림에서 공백 문자가 (스페이스,탭, 개행문자 등)가 나오기 전까지의 문자열만 읽어온다.

ex) "good morning"을 입력하면 "good"만 읽어온다.

 

sc.nextLine() : 개행문자를 기준으로 다음 행을 읽어온다. 개행문자가 나오기 전까지의 모든 문자열을 읽어온다. 

ex) "good morning"을 입력하면 "good morning" 전체를 읽어온다.


코드업에 제출 시에도 입출력에 문제가 없기 때문에 정답으로 제출도 되었다. (문제의 의도와 다르더라도 결과값을 출력하는데 이상이 없으면 테스트케이스에서 걸리지 않기 때문에 정확한 풀이라고 나오는 것 같다.)

 

 

방법2. 출제 의도대로 풀기

      import java.util.Scanner;
      
      public class CodeUp1018 {
    		public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                String[] strArr = sc.next().split(":");
                System.out.print(strArr[0] + ":" + strArr[1]);
    }
}

 

여기에서는 split(":")와 같이 작성하여 ":"(콜론)을 기준으로 문자열을 구분하여 배열을 strArr에 저장하도록 하였다. 

 

결과


split()

split() : 문자열(string)을 특정 구분자를 기준으로 나누어 문자열 배열(String[])로 반환하는 메소드이다. 

ex)

String milkteaType = "black, earl, taro";

 milkteaType라는 문자열에 black, earl, taro와 같이 세 개의 단어를 쉼표를 이용하여 하나의 문자열로 작성하였다.

 

String[] milkteaArr = milkteaType.split(",");

이와 같이 코드를 작성하면 milkteaArr 배열에 {"black,", "earl", "taro"}가 저장된다. 

 

System.out.println(Arrays.toString(milkteaArr));

> 결과 : [black,  earl,  taro]

배열을 출력해보았더니 쉼표를 기준으로 세 개의 문자가 [0], [1], [2] 자리에 각각 값이 제대로 들어가 있는 것을 확인할 수 있었다.

 

!! 주의할 점 !!

Java의 split() 메소드는 정규식(regular expression)을 사용하여 문자열을 나누기 때문에, 일부 특수문자를 문자 그대로 처리하고 싶을 때에는 이스케이프(escape) 문자인 백슬래시(\)를 사용해야 한다.

 

ex)문자 그대로 "."을 사용하여 문자열을 나누기 위해서는 백슬래시를 사ㅛㅇ하여 이스케이프 처리를 해주어야 한다.String str = "apple, banana, kiwi";String[] fruits = str.split("\\.");이와 같이 백슬래시를 두 번 연속해서 사용하면, 실제로는 "."문자를 구분자로 사용하게 된다. ("\\." 이 아니고 ".")

다른 특수문자들(예: *, +, ?, | 등)에 대해서도 이스케이프 처리를 해주어야 한다.

 

 

'Algorithm > CodeUp' 카테고리의 다른 글

[Java] codeup 1020 2가지 풀이  (0) 2023.05.04
[Java] codeup 1019  (0) 2023.05.04
[Java] codeup 1015  (0) 2023.05.01
[Java] codeup 1010  (0) 2023.04.27
[Java] codeup 1008  (0) 2023.04.27

/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */