문제 개요
이번 글에서는 섭씨(Celsius) 또는 화씨(Fahrenheit) 단위의 온도를 나타내는 문자열을 입력받아, 반대 단위로 변환해 주는 JavaScript 함수를 작성해 보겠습니다.
입력 형식은 숫자 뒤에 단위 알파벳이 붙은 문자열입니다.
"23F", "43C", "23F"
구현 아이디어
온도 변환 공식은 다음과 같습니다.
- 섭씨 → 화씨: °F = °C × 9/5 + 32
- 화씨 → 섭씨: °C = (°F − 32) × 5/9
함수는 문자열의 마지막 글자가 'C'인지 'F'인지 판별한 뒤, 해당하는 공식을 적용하고 결과를 소수점 둘째 자리까지 반올림하여 단위를 붙여 반환합니다.
예제 코드
const temp1 = '37C';
const temp2 = '100F';
const tempConverter = temp => {
const degree = temp[temp.length - 1];
let converted;
if (degree === "C") {
converted = (parseInt(temp) * 9 / 5 + 32).toFixed(2) + "F";
} else {
converted = ((parseInt(temp) - 32) * 5 / 9).toFixed(2) + "C";
}
return converted;
};
console.log(tempConverter(temp1));
console.log(tempConverter(temp2));
실행 결과
콘솔에는 다음과 같이 출력됩니다.
98.60F
37.78C
코드 설명
- temp[temp.length - 1]: 문자열의 마지막 문자, 즉 온도 단위('C' 또는 'F')를 추출합니다.
- parseInt(temp): 문자열에서 숫자 부분만 정수로 파싱합니다.
- toFixed(2): 계산 결과를 소수점 둘째 자리까지 반올림한 문자열로 만들어 줍니다.
위 코드를 실행하면 37°C가 98.60°F로, 100°F가 37.78°C로 정확하게 변환되는 것을 확인할 수 있습니다. 이처럼 문자열 끝의 단위 문자만 확인하면 간단한 조건 분기만으로 양방향 온도 변환기를 손쉽게 구현할 수 있습니다.