티스토리 뷰

아르바이트를 하는 시간에 개인적으로 알고리즘을 공부하고 있는데, 오답노트를 만들어 보고자 한다.

이 글을 읽는 여러분은 아마 같은 문제를 풀던 도중 풀이가 막혀서 해답을 찾으러 오신분이 아닐까 생각되는데, 부족하지만 도움이 되었으면 좋겠다.

 

이번 문제는 섭씨 온도를 화씨 온도로 변환하는 문제인데, 별거 아닌 부분에서 출력값이 생각처럼 안나와서 다시금 생각해보게 만든 문제이다.

 

프로그램 명: CtoF
제한시간: 1 초

섭씨 온도를 화씨 온도로 변환하는 프로그램을 작성하세요.

화씨 온도 = 9 / 5 * 섭씨온도 + 32

입력

1 에서 100 사이의 자연수가 입력으로 주어진다.

출력

소수 첫째 자리까지 출력한다.

입출력 예

입력

50

출력

122.0

 

 

나의 오답.

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
 double a;
 scanf("%lf",&a);
 
 printf("%.1lf",a * (9/5+ 32);
 
 return 0;
}
cs

 

수정한 나의 정답과 풀이

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
double a;
scanf("%lf",&a);
 
printf("%.1lf",a * 1.8 + 32);
 
return 0;
}
cs

 

우선 섭씨를 화씨로 변환하는 공식은 섭씨온도 * (9/5) + 32 라고 한다.

나는 공식대로 입력했는데 왜 틀렸을까?

 

문제는 형변환이었다.

 

소수 첫째까지 출력하라는 조건에 double형으로 입력을 받고, %lf로 출력을 하였지만 9/5 부분에서 정수 나누기 정수로 계산이 되었다.

해결방법으로 나는 9/5의 결과값인 1.8을 썼지만, 9.0/5.0이라고 수정했어도 되었을 것이다.

 

'개발노트 > 알고리즘' 카테고리의 다른 글

더블릿 알고리즘 : 퓨즈(fuse)  (0) 2015.12.09
15 Sorting Algorithms in 6 Minutes  (0) 2015.06.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함