본문 바로가기

HackerRank

[해커랭크] Day 5: Template Literals (javascript)

 

태그함수를 이용하여 이차 방정식 풀기

*tagged template literal function
ex) function sides(literals, ...expressions) { }
sides`The area is: ${val1}.\nThe perimeter is: ${val2}.`
-> literals: ['The area is:', '\nThe perimeter is:', '.']
-> expressions: [val1, val2]

조건

  • 주어진 area, perimeter 값으로부터 다음 방정식을 이용하여 s1, s2를 풀 것

이차방정식 (P: 둘레, A: 면적)

  • s1, s2를 오름차순의 배열로 만들어 전달

 

제한사항

  • 1 ≤ s1, s2 ≤ 100

 

나의 풀이

  • expressions 로 전달받은 인자를 각각 A, P 로 할당
  • 제공된 이차방정식을 이용하여 각각 s1, s2 계산
  • 오름차순으로 정렬 후 전달
// 생략

/*
 * Determine the original side lengths and return an array:
 * - The first element is the length of the shorter side
 * - The second element is the length of the longer side
 * 
 * Parameter(s):
 * literals: The tagged template literal's array of strings.
 * expressions: The tagged template literal's array of expression values (i.e., [area, perimeter]).
 */
function sides(literals, ...expressions) {
    
    const [A, P] = expressions;
    const root = Math.sqrt(Math.pow(P, 2) - 16 * A );
    const s1 = (P + root)/4;
    const s2 = (P - root)/4;
    
    return [s1, s2].sort();
}

// ..후략

결과