개발/코딩테스트

코드업(codeup.co.kr) 1205 : 최댓값 해설 (C언어)

ensuta 2022. 5. 1. 20:50
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 함수의 실수부분을 구현할 수 있다.

반응형