티스토리 뷰
#. Problem
* The copyright in this matter is in Inflearn
#. Resolution Process
1. Read and understand problem
2. Redefine the problem + abstract
3. Create solution plan (select Algorithm, Data structure)
4. Prove the plan (check performance time and usage memory)
5. Carry out the plan
6. Look back on the plan and find a way to improve it
#. Solve
1. 입력된 숫자들의 각 자리수 합을 구해야 하므로, 간단하게 sum에 X % 10 을 더해준 후 X / 10 을 해주는데 X 가 0이 아닐때까지 반복해주면 될 것 같다.
#. Code
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 32 33 34 35 36 37 38 39 40 | #include<stdio.h> using namespace std; int digit_sum(int x) { int sum = 0; while (x) { sum += x % 10; x /= 10; } return sum; } int main() { // freopen("input.txt", "rt", stdin); int i, n, x, sum = 0, maxSum = -2147000000, maxNum = -2147000000; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &x); sum = digit_sum(x); if (maxSum <= sum) { maxNum = (maxSum == sum) ? (x > maxNum ? x : maxNum) : x; maxSum = sum; } } printf("%d\n", maxNum); return 0; } | cs |
#. Other code
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 32 33 34 35 36 37 | #include<stdio.h> int digit_sum(int x){ int sum=0, tmp; while(x>0){ tmp=x%10; sum=sum+tmp; x=x/10; } return sum; } int main(){ int n, num, i, sum, max=-2147000000, res; scanf("%d", &n); for(i=1; i<=n; i++){ scanf("%d", &num); sum=digit_sum(num); if(sum>max){ max=sum; res=num; } else if(sum==max){ if(num>res) res=num; } } printf("%d\n", res); return 0; } | cs |
전체적인 로직은 유사하다.
다만, 여기서는 else if(sum==max)의 경우를 따로 빼주어서 내 코드의 if(maxSum <= sum) 보다 효율적인 것 같다.
나는 maxNum을 구하기 위해 모든 경우를 비교해야하는 연산이 있기 때문에..
뭔가 간결하게 짜려고 하다보니 오히려 더 효율성을 떨어뜨린 것 같다.
우선 주먹구구식(?)으로 쉽게 생각하고 그다음 효율성있게 코드를 정리하는 습관이 필요한 것 같다.
#. Result
- Input --------------------------------------------------------
5
125 15232 79 1325 97
------------------------------------------------------------------
- Output --------------------------------------------------------
97
------------------------------------------------------------------
'PS > Problem_Solving' 카테고리의 다른 글
[Inflearn] 숫자의 총 개수(large) (0) | 2020.04.20 |
---|---|
[Inflearn] 숫자의 총 개수(small) (0) | 2020.04.20 |
[Inflearn] 모두의 약수 (0) | 2020.04.20 |
[Inflearn] 올바른 괄호 (0) | 2020.04.20 |
[Inflearn] 영어단어 복구 (0) | 2020.04.20 |