<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[백준 2908] 상수

BlockDMask 2017. 9. 17. 14:13
반응형
  • 안녕하세요.  BlockDMask 입니다.

  • 이번 문제는 170809 일자 채우기 문제입니다.

0. 제목

  • 백준 2908 상수

  • BOJ 2908 상수

1. 문제 설명


자릿수가 세 자리인 숫자가 입력으로 들어온다.


두 수를 거꾸로 읽었을때


큰 수를 출력하면 된다.


두수는 같지 않은 세 자리 수이며, 0 이 포함 되어 있지 않다.


2. 풀이 과정


자릿수에 관한 문제이므로


1의 자리는 10으로 나누었을때 나머지

10의 자리는 100으로 나누었을때 나머지

100의 자리는 1000으로 나누었을 때 나머지 이다.


이것을 이용하여


똑바로된 수의 1의 자리를 

변경될 수의 100의 자리로.

옮기는 방식으로 하면된다.


똑바로 된 수를 10으로 나누어서 두자리 수로 줄이고 

그것의 1의 자리를

변경될 수의 10의 자리로.


두자리 수인 똑바로 된 수를 10으로 또 나누어 한 자리 수로 만들고

그것의 1의 자리를

변경될 수의 1의 자리로.


3. 코드


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
#include<iostream>
#include<cmath>
using namespace std;
 
int main(void){
 
    int a;
    int b;
    cin >> a;
    cin >> b;
 
    int ra=0;
    int rb=0;
 
    //숫자가 거꾸로 들어감
    //원래 숫자의 1의 자리를 바뀔 숫자에 자리수에 맞게 곱해서 더해준다
    for(int i=0; i<3; i++){
        ra += (a%10* pow(102-i);
        rb += (b%10* pow(102-i);
 
        a /= 10;
        b /= 10;
    }
 
    cout << max(ra,rb) << endl;
 
    return 0;
}
 
cs


4. 인증



문제 출처 - https://www.acmicpc.net/problem/2908

감사합니다. 도움이 되셨으면 하트 한번 부탁드립니다.

반응형