728x90
반응형
문제 설명
두 실수 x, y가 입력되면 그 두수를 더하거나 빼거나 곱하거나 나누거나 제곱을 해서 가장 큰 수를 출력하라.
예를 들어 1과 2가 입력되면,
1+2 = 3 , 2+1 = 3
1 - 2 = -1, 2 - 1 = 1
1 * 2 = 2, 2 * 1 = 2
1 / 2 = 0.5, 2 / 1 = 2
1^2=1 , 2^1 = 2
따라서 최댓값은 3이다.
입력
실수 x,y 가 입력된다. ( x와 y의 계산결과는 모두 int range이고, 계산이 불가능한 경우는 입력에서 제외되었다.)
출력
최댓값을 소수점 이하 6자리로 잘라서 출력한다.
입력 예시
1 2
출력 예시
3.000000
1) 조건문 if 로만 푸는법
1. 계산/비교를 위한 적절한 변수 초기화
2. for 반복문으로 a^b , b^a 구하기
3. max 값을 하나하나 비교해나가며 프로그램 진행
4. 조건에 맞게 float 출력
#include<stdio.h>
int main(){
int x,y;
int tmp;
float max=0; //max 값에 Null이 있으면 안되므로 임시 값을 넣음
float xpow = 1; // 실수의 0제곱 == 1
float ypow = 1; // 실수의 0제곱 == 1
scanf("%d %d",&a,&b);
if(x>y){ //x<y로 대소를 명확히 한다.
tmp = x;
x = y;
y = tmp;
}
for(int i=1;i<=y;i++){ //x^y
xpow*=x;
}
for(int i=1;i<=x;i++){ //y^x
ypow*=y;
}
if((y-x)>max){
max = y-x;
}
if((x+y)>max){
max = x+y;
}
if((x*y)>max){
max = x*y;
}
if((x/y)>max){
max = x/y;
}
if(xpow>max){
max = xpow;
}
if(ypow>max){
max = ypow;
}
printf("%.6f",max); //.06f 를 .6f으로 줄일 수 있다.
return 0;
}
2) math.h 를 사용
1. 계산/비교를 위한 적절한 변수 초기화
2. math.h 의 pow 함수로 제곱 값 구함
3. max 값을 하나하나 비교해나가며 프로그램 진행
4. 조건에 맞게 float 출력
#include <stdio.h>
#include <math.h> //math.h 사용
int main () {
int x, num2;
float max;
scanf("%d %d",&x, &y);
max = x + y; //이 문제에서는 임의의 값 대신 a+b를 대입해 비교해나가도 됨
if(x-y > max){
max = x - y;
}
if(y-x > max){
max = y-x;
}
if(x*y > max){
max = x * y;
}
//자동 형(Type)변환에 의존하지 않고 모두 수동변환
if((float)(x / y) > max){
max = (float)(X / y);
}
if((float)(y / x) > max){
max = (float)(y / x);
}
//pow(a,b) == a^b 를 이용해 거듭제곱 값을 구함
if(pow(x,y)> max){
max = pow(x,y);
}
if(pow(y,x)> max){
max = pow(y,x);
}
printf("%.06f",max);
return 0;
}
둘 다 기본 로직 구성은 같다.
C언어의 다양한 문법을 볼 수 있다.
단순하게 for 반복문으로 pow 함수의 실수부분을 구현할 수 있다.
반응형
'개발 > 코딩테스트' 카테고리의 다른 글
코드업(codeup.co.kr) 1542 : 함수로 prime 또는 composite 출력하기 해설 (C언어) (0) | 2022.11.01 |
---|---|
코드업(codeup.co.kr) 1550 : 함수의 양의 제곱근의 정수 부분만 리턴하기 해설 (C언어) (0) | 2022.11.01 |
코드업(codeup.co.kr) 1210 : 칼로리 계산하기 해설 (C언어) (1) | 2022.05.02 |
코드업(codeup.co.kr) 1180 : 만능 휴지통 해설 (C언어) (0) | 2022.05.01 |
코드업(codeup.co.kr) 1097 : 바둑알 십자 뒤집기 해설 (C언어) (0) | 2022.03.26 |