https://www.acmicpc.net/problem/2480
#include <stdio.h>
int main(){
int i,j,k;
scanf("%d %d %d", &i,&j,&k);
if(i==j && i==k) printf("%d", 10000+(i*1000));
else if(i==j || i==k) printf("%d", 1000+(i*100));
else if(j==k) printf("%d", 1000+(j*100));
else {
int tmp;
if(i>j && i>k) tmp = i;
else if(j>i && j>k) tmp =j;
else tmp =k;
printf("%d", tmp*100);
}
}
이런 문제는 간단한데 풀 때 고민이 된다.
같은 수가 2개라고 할 때 i==j || j==k || k == i 라고 하면 같은 수가 뭔지 어떻게 확인하지? 했는데
그걸 구분하는 코드를 짜는게 어려울거 같아서 if문 나눠버렸다.
그리고 마지막에 세개 중 제일 큰 수 구하는데 if문 썼는데 좀 별로인거 같았다
삼항연산자로 구현할까 하다가 코드를 이해하기 어려워져서 포기했다.
다른 코드
#include <stdio.h>
int max(int a,int b){return a>b?a:b;}
int main() {
int a,b,c,n,t,ans=0;
scanf("%d %d %d",&a,&b,&c);
if(a==b&&b==c) printf("%d",10000+1000*a);
else if(a==b||b==c||c==a) printf("%d",1000+100*(a+b+c-(a^b^c))/2);
else printf("%d",max(max(a,b),c)*100);
}
max 함수 구현해서 만든 버전.
더 깔끔해보여서 좋다. 그런데 (a+b+c-(a^b^c))/2) 가 무슨 식인지 이해가 안간다.
실력이 정말 한탄스럽다.
#include<stdio.h>
int main(){
int a,b,c,m;
scanf("%d%d%d",&a,&b,&c);
if(a==b&&b==c) m=10000+a*1000;
else if(a==b||a==c) m=1000+a*100;
else if(b==c) m=1000+b*100;
else if(a>b&&a>c) m=a*100;
else if(b>c) m=b*100;
else m=c*100;
printf("%d",m);
}
이게 더 마음에 드는 코드.
솔직히 나같이 뭘 모르는 애의 마음에 들어봤자 뭐가 나은진 모르겠지만
이렇게 짤 수도 있구나 배워가는거 같아서 만족스럽다.
메모리나 시간은 차이 없는데 누가 더 클린하게 코드를 짜느냐가 문제인듯 하다.
'알고리즘 > 백준' 카테고리의 다른 글
| [JavaScript/BFS] 백준 골드 5 : 18405 - 경쟁적 전염 (0) | 2023.08.12 |
|---|---|
| [JavaScript/DFS] 백준 골드 4 : 14502 - 연구소 (0) | 2023.08.12 |
| [C++] - 백준(Baekjoon) : 4673번 셀프넘버 (0) | 2022.06.22 |
| [C] - 백준(Baekjoon) : 1546번 평균 (1) | 2022.06.16 |
| [C] - 백준(Baekjoon) : 2588번 곱셈 (0) | 2022.06.04 |