본문 바로가기
컴퓨터/C, C++

[C/C++] 백준 2480번 주사위 세개

by stdFrog 2022. 3. 16.

 

이 문제, 대여섯번 틀려서 코드를 계속 수정했다.

결국엔 오타 문제였고, 작성한 코드는 전부 정상이었다.

#include <stdio.h>

int main()
{
    int a,b,c;
    
    scanf("%d %d %d",&a,&b,&c);
    if(a==b&&b==c)
    { printf("%d",a*1000+10000); }
    else if(a==b||b==c||a==c)
    { 
      if(a==b){ printf("%d",a*100+1000); }
      else { printf("%d",c*100+1000); } 
    }
    else
    { printf("%d",((a<b?b:a)<c?c:(a<b?b:a))*100); }
}

중간에 else if(a==b||b==c||a==c) 내부 if문은 a와 b만 우선 비교하면 된다. 나머지는 b==c 또는 a==c이기 때문에 c 값으로 계산해서 출력했다.

 

맨 마지막 삼항연산자

- printf( "%d", ((a<b?b:a)<c?c:(a<b?b:a)) * 100 );

 

이 부분을 차례대로 쪼개서 보면 (a<b?b:a)는 a보다 b가 크면 b를 반환하고 아니면 a를 반환한다.

이걸 한 번 더 감싸서 c와 비교하고 c가 더 크면 c를 반환, 아니면 이전 항의 연산을 다시 수행해서 a나 b중 하나의 값을 반환한다.

반응형

댓글