[코딩테스트] 백준1065 한수 - C++, PYTHON

Coffee Time☕·2021년 4월 3일
0

코딩테스트

목록 보기
22/42

✔ 문제

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오

✔ 입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

✔ 출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

💖 문제 풀이

등차수열로 증가하는 숫자는 세자리 숫자 부터 시작한다. 입력값이 1000 이하로 작은 수이기에 등차 d 값을 이용하여 -4 부터 4 까지 값을 구하였다.

💖 C++ 코드

#include <iostream>

using namespace std; 

int main() {

	int n; 
	cin >> n; 
	int count = 0; 
	int number = 0 ;

	if (n < 100) {// 2자리, 1자리 숫자인 경우 
		count = n; 
	}
	else { // 3자리 숫자인 경우 
		for (int hundreds=1; hundreds <= 9 ;hundreds++) {
			int tens = 1;// 십의 자리 
			int ones = 1;// 일의 자리

			for (int d = -1; d >= -4; d--) { // d가 음수인 경우 
				tens = hundreds + d;
				ones = tens + d;
				if (tens < 0 || ones < 0) break;
				number = hundreds * 100 + tens * 10 + ones;
				if (number > n)continue; 
				else count++;
			//	cout << number << "\n";
			}

			for (int d = 0 ; d<=4; d++) {  //d가 0보다 큰 경우 
				tens = hundreds + d;
				ones = tens + d;
				if (ones >= 10)break;

	
				number = hundreds * 100 + tens * 10 + ones;
				if (number > n)continue;
				else count++; 
			//	cout << number << "\n";
			}
			
		}
		count += 99; 
	}
	

	cout  <<count ;

	return 0;
}

💖 파이썬 코드

n = int(input()) 
count  = 0 
number = 0 

if n < 100: 
    count=  n 
else :
    for hundreds in range(1,10): 
        tens = 1 # 십의 자리 
        ones = 1 # 일의 자리 
        for d in range(-1,-5,-1): 
            tens = hundreds + d 
            ones = tens + d
            if (tens < 0 or ones < 0 ): 
                break 
            number = hundreds*100 + tens*10 + ones*1 
            if (number > n): 
                continue
            else:
                #print(number)
                count = count + 1 
        for d in range(0,5): 
            tens = hundreds + d 
            ones = tens + d
            if (ones >= 10): 
                break 
            number = hundreds*100 + tens*10 + ones*1 
            if (number > n): 
                continue
            else: 
                #print(number)
                count = count + 1 
    count = count + 99
            
print(count)

0개의 댓글

관련 채용 정보