관리 메뉴

LC Studio

HackerRank Time Convertion (JAVA) 본문

Java/HackerRank

HackerRank Time Convertion (JAVA)

Leopard Cat 2022. 3. 24. 10:33

https://www.hackerrank.com/challenges/one-week-preparation-kit-time-conversion/problem?isFullScreen=true&h_l=interview&playlist_slugs%5B%5D=preparation-kits&playlist_slugs%5B%5D=one-week-preparation-kit&playlist_slugs%5B%5D=one-week-day-one 

 

Time Conversion | HackerRank

Convert time from an AM/PM format to a 24 hour format.

www.hackerrank.com

문제

Given a time in -hour AM/PM format, convert it to military (24-hour) time.

Note: - 12:00:00AM on a 12-hour clock is 00:00:00 on a 24-hour clock.
- 12:00:00PM on a 12-hour clock is 12:00:00 on a 24-hour clock.

Example

  • s = '12:01:00PM'
  • Return '12:01:00'.
  • s = '12:01:00AM'
  • Return '00:01:00'.

풀이

문제를 요약해 보자면,

AM PM으로 구별하는 시간개념이 주어지면, 군대식 시간(24시간)개념으로 변경하여 출력하라는 것이다.

BufferedReader, Writer등은 자동으로 주어지고, class Result에 코드를 작성하면 된다.

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;

class Result {

    /*
     * Complete the 'timeConversion' function below.
     *
     * The function is expected to return a STRING.
     * The function accepts STRING s as parameter.
     */

    public static String timeConversion(String s) {
    // Write your code here

    StringBuffer result = new StringBuffer();
    //hour에 입력받은 문자열의 앞2글자를 int형으로 저장
    int hour = Integer.parseInt(s.substring(0,2));
    //timeFlag에 입력받은 문자열의 맨 뒤 2글자를 String형으로 저장
    String timeFlag = s.substring(s.length()-2, s.length());

    //맨 뒤 2글자가 PM이라면
    if(timeFlag.equalsIgnoreCase("PM")) {
        //12시 이하의 시간이라면 12를 더해준다
        if(hour < 12) {
          hour += 12;  
        }

        //append를 사용하여 result에 hour을 추가한다
        result.append(String.valueOf(hour));

    } 
    //맨 뒤 2글자가 AM이라면
    else {
        //12시라면 00시로 변경해준다
        if(hour == 12) {
            //append를 사용하여 result에 "00"을 추가한다
            result.append("00");
        }
        //시간이 10시 미만이라면
        else if(hour < 10){
            //append를 사용하여 result에 '0'과 hour을 추가한다
            result.append('0').append(String.valueOf(hour));            
        }
        else{
            //append를 사용하여 result에 hour을 추가한다
            result.append(String.valueOf(hour));
        }

    }

}

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        String s = bufferedReader.readLine();

        String result = Result.timeConversion(s);

        bufferedWriter.write(result);
        bufferedWriter.newLine();

        bufferedReader.close();
        bufferedWriter.close();
    }
}

배운점

1. StringBuffer

StringBuffer는 문자열을 추가하거나 변경 할 때 주로 사용하는 자료형이다.

- append

-insert

-substring

메소드를 가지고 있다.

 

*StringBuffer 자료형은 append 메소드를 사용하여 계속해서 문자열을 추가해 나갈 수 있다.

ex)

StringBuffer result = new StringBuffer();

result.append("문자열 추가");

System.out.println(result);->문자열 추가

 

*insert 메소드는 특정 위치에 원하는 문자열을 삽입할 수 있다.

ex)

StringBuffer result = new StringBuffer();

result.append("문자열 추가");

sb.insert(0, "hello ");

System.out.println(result);

->hello 문자열 추가

 

*substring 메소드는 String 자료형의 substring 메소드와 동일하게 사용된다.

StringBuffer result = new StringBuffer();

result.append("문자열 추가");

System.out.println(substring(0,3));

->문자열

 

substring(시작위치, 끝위치)와 같이 사용하면 StringBuffer 객체의 시작위치에서 끝위치까지의 문자를 뽑아낸다.

 

반응형

'Java > HackerRank' 카테고리의 다른 글

HackerRank Counting Sort 1 (JAVA)  (0) 2022.03.29