ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 특정 수 제외하기(9진법)
    코딩테스트 2024. 1. 23. 14:02

    숫자를 나열할 때 4가 들어간 수가 있다면 그 수를 제외하고 그 다음 번호를 부여한다.

    만약 숫자 N이 주어진다면 이 숫자가 4를 제외하지 않은 원래의 순서를 부여받을 때 몇 번을 부여받을지 출력하시오.

     

    풀이 :

    0 1 2 3 4 5 6 7 8 9 에서 4가 사라진다면 숫자 N을 10진수가 아닌 9진수라고 생각할 수 있다.

    예를 들어 N = 13라는 9진수가 있고 이를 10진수로 변환하면 1x9^1 + 3x9^0 = 9+3 = 12 이다.

    하지만 만약 각 자리의 수가 4 이상이라면 예를 들어 5라는 수는 원래 4라는 수이고, 6이라면 원래 5라는 수를 의미하기 때문에 4이상인 수에 대해서는 -1을 해줘야 한다.

     

    N=55인 경우 (5-1)x9^1 + (5-1)x9^0 = 36+4 = 40 이다.

     

    #include <iostream>
    #include <cmath>
    using namespace std;
    int N;//빌딩의 층수
    void InputData(){
        cin >> N;
    }
    
    int solve(int num) { 
    	int cnt = 0;
    	int res = 0;
    	while (num > 0) {
    		int tmp = num%10;
    		if (tmp > 4) tmp -= 1;
    		res += pow(9, cnt) * tmp;
    		cnt++;
    		num /= 10;
    	}
    	return res;
    }
    
    int main(){
        int ans = -1;
        InputData();//입력받는 부분
    
        //여기서부터 작성
    	ans = solve(N);
    
        cout << ans << endl;//출력하는 부분
        return 0;
    }
Designed by Tistory.