코딩 테스트

[HackerRank] Time Conversion

juble 2024. 9. 23. 17:08

Problem


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

  •  
  • Return '12:01:00'.
  •  
  • Return '00:01:00'.

Function Description

Complete the timeConversion function in the editor below. It should return a new string representing the input time in 24 hour format.

timeConversion has the following parameter(s):

  • string s: a time in  hour format

Returns

  • string: the time in  hour format

Input Format

A single string  that represents a time in -hour clock format (i.e.:  or ).

Constraints

  • All input times are valid

Sample Input

07:05:45PM

Sample Output

19:05:45

주어진 시간을 12시간 AM/PM 형식에서 군사 시간(24시간 형식)으로 변환하세요.

노트:

  • 12:00:00AM은 24시간 형식에서 00:00:00입니다.
  • 12:00:00PM은 24시간 형식에서 12:00:00입니다.

예시

  • 입력: 07:05:45PM
  • 출력: 19:05:45

함수 설명

편집기에 있는 timeConversion 함수를 완성하세요. 이 함수는 24시간 형식으로 변환된 시간을 나타내는 새로운 문자열을 반환해야 합니다.

timeConversion 함수의 매개변수:

  • String s: 12시간 형식의 시간을 나타내는 문자열

반환:

  • String: 24시간 형식의 시간

입력 형식

  • 12시간 시계 형식으로 표현된 하나의 문자열이 주어집니다 (예: hh:mm:ssAM 또는 hh:mm:ssPM).

제약 조건

  • 모든 입력 시간은 유효합니다.

 

Solution


 내가 해결한 방식은 다음과 같다. 

public static String timeConversion(String s) {
    // Write your code here
        String period = s.substring(8, 10);
        String hour = s.substring(0, 2);
        String minute = s.substring(3, 5);
        String second = s.substring(6, 8);
        
        if (period.equals("AM")) {
            if (hour.equals("12")) {
                hour = "00"; 
            }
        } else { // PM
            if (!hour.equals("12")) {
                hour = String.valueOf(Integer.parseInt(hour) + 12); 
            }
        }

        return hour + ":" + minute + ":" + second;
    }

 

1. substring 메서드

s.substring(beginIndex, endIndex)
  • 주어진 문자열에서 특정 범위의 문자를 추출하여 새로운 문자열을 반환하는 메서드
  • beginIndex는 포함되고, endIndex는 포함되지 않는다. 
    • ex) s.substring(8, 10)는 입력 문자열의 8번 인덱스부터 9번 인덱스까지의 문자를 추출하여 AM 또는 PM을 가져온다. 
    • ex) s.substring(0, 2)는 시(hour)를 가져온다. 

 

2. Integer.parseInt

 Integer.parseInt(String s)
  • 문자열을 정수형으로 변환하는 역할
  • 문자열이 정수로 표현될 수 있어야 하며, 그렇지 않으면 NumberFormatException이 발생
    • ex) Integer.parseInt(hour)는 문자열 형태의 시간(예: "07")을 정수형으로 변환하여 연산에 사용할 수 있다.

 

3. String.valueOf

String.valueOf(int i)
  • 다양한 데이터 타입을 문자열로 변환하는 메서드
  • 특히 숫자형 데이터를 문자열로 변환할 때 유용하다. 
    • ex) String.valueOf(Integer.parseInt(hour) + 12)는 PM 시간에 12를 더한 후, 그 결과를 다시 문자열로 변환한다. 

728x90
반응형

'코딩 테스트' 카테고리의 다른 글

[HackerRank] Diagonal Difference  (0) 2024.09.24
[HackerRank] Lonely Integer  (0) 2024.09.23
[HackerRank] Find the Median  (4) 2024.09.23
[HackerRank] Plus Minus  (0) 2024.09.23
[HackerRank] Mini-Max Sum  (0) 2024.09.23