The Time in Words

sun202x·2022년 8월 5일
0

알고리즘

목록 보기
2/49

사이트: HackerRank
난이도: 미디움

문제

시간과 분이 파라미터로 넘어오며 분에 따라 알맞은 표현방식으로 반환하는 문제이다.

1. 나의 풀이

문자열 조합 문제라서 어렵지 않게 작성하였던 것 같다.

function timeInWords(h, m) {
    // Write your code here
    const units = [
        'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 
        'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 
        'eighteen', 'nineteen', 'twenty'
    ];
    
    let hour = units[(12 + (m > 30 ? h : h - 1)) % 12], 
        minute;

    if (m === 0) {
        return `${hour} o' clock`;
    }
    
    if (m === 30) {
        minute = 'half';
    } else if (Math.abs(m - 30) === 15) {
        minute = 'quarter';
    } else {
        minute = m > 30 ? 60 - m : m;
        minute = minute > 20 
            ? `${units[19] } ${units[minute - 21]} minutes` 
            : `${units[minute - 1]} ${minute === 1 ? 'minute' : 'minutes'}`;
    }
    
    return `${minute} ${m > 30 ? 'to' : 'past'} ${hour}`;
}

2. 다른사람의 풀이

바로 풀 수 있었던 문제들은 지금은 생략하고 추후 더 효율적인 문제 풀이법을 찾아보도록 하겠다.

profile
긍정적으로 살고 싶은 개발자

0개의 댓글