-
특정 수 제외하기(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; }
'코딩테스트' 카테고리의 다른 글
정올 숫자근 c++ (0) 2024.02.08 정올 폭탄 돌리기 c++ (0) 2024.02.08 프로그래머스 숫자의 표현(자바) (2) 2023.06.07 백준 14719번 빗물(자바) - 스택 (0) 2023.05.29 기타 문제풀이(합분해 문제 업그레이드) (0) 2023.05.14