[코테] HackerRank Time Conversion

Dongmin Lee·2023년 5월 12일
0

코테

목록 보기
5/23

💿 문제

💾 문제 요약

AM/PM 포맷을 밀리터리 타임으로 바꿔라.

💿 풀이

필요한 조건 1. 입력 값이 AM인지 PM인지?
필요한 조건 2. 입력 값이 12시인지 아닌지?

각각 조건 판별에 필요한 값을 추출하기 위해

1.정규식+match 메서드로 숫자만 뽑아냄.
2.charAt 메서드로 AM/PM만 뽑아냄.

if 문으로 분기해서 hour 값을 바꿔줌.

바뀐 hour 값을 가지고 포매팅해서 리턴.

💾 풀이 코드

'use strict';

const fs = require('fs');

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', function(inputStdin) {
    inputString += inputStdin;
});

process.stdin.on('end', function() {
    inputString = inputString.split('\n');

    main();
});

function readLine() {
    return inputString[currentLine++];
}

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

function timeConversion(s) {
    const numbers = s.match(/\d+/g);
    const merd = s.charAt(s.length -2) + s.charAt(s.length -1);
    let hour = numbers[0];
   
    if (merd === "AM") {
     if(hour === "12") {
       hour = "00";
     } 
    } else if (merd === "PM") {
      if(hour !== "12") {
        hour =`${Number(hour)+12}`
      }
    }
    
    const result = `${hour}:${numbers[1]}:${numbers[2]}`;
    
    return result;
}

function main() {
    const ws = fs.createWriteStream(process.env.OUTPUT_PATH);

    const s = readLine();

    const result = timeConversion(s);

    ws.write(result + '\n');

    ws.end();
}

💿 리마인더

  1. 숫자만 추출해서 배열에 담으려면 -> 정규식+match 메서드 활용

  2. 문자열에서 특정 인덱스 추출하기 -> charAt 메서드 활용

profile
어제보다 성장하기

0개의 댓글