60
풀이
1부터 100 미만의 수는 모두 한수, 1000(최대 입력)은 한수가 아닙니다. 이제 세 자리 수만 고려하면 됩니다. (‘백의 자리 수’ – ‘십의 자리 수’), (‘십의 자리 수’ – ‘일의 자리 수’), 이 둘이 동일한지만 확인하면 한수를 판별할 수 있습니다.
코드
C
#include <stdio.h>
int ishan(int n){
int temp1, temp2;
if(n < 100)
return 1;
else if(n == 1000){
return 0;
}
else{
temp1 = (n%100)/10 - n/100;
temp2 = n%10 - (n%100)/10;
if(temp1 == temp2)
return 1;
else
return 0;
}
}
int main(){
int num = 0, n, i;
scanf("%d", &n);
for(i=0;i<n;i++){
if(ishan(i+1)==1)
num++;
}
printf("%d", num);
return 0;
}
C++
#include <iostream>
using namespace std;
int ishan(int n){
int temp1, temp2;
if(n < 100)
return 1;
else if(n == 1000){
return 0;
}
else{
temp1 = (n%100)/10 - n/100;
temp2 = n%10 - (n%100)/10;
if(temp1 == temp2)
return 1;
else
return 0;
}
}
int main(){
int num = 0, n;
cin>>n;
for(int i=0;i<n;i++){
if(ishan(i+1)==1)
num++;
}
cout<<num;
return 0;
}
Java
import java.util.Scanner;
public class Main{
public static int ishan(int n){
int temp1, temp2;
if(n < 100){
return 1;
}
else if(n == 1000){
return 0;
}
else{
temp1 = (n%100)/10 - n/100;
temp2 = n%10 - (n%100)/10;
if(temp1 == temp2)
return 1;
else
return 0;
}
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = 0;
int n = sc.nextInt();
for(int i=0;i<n;i++){
if(ishan(i+1)==1)
num++;
}
System.out.println(num);
}
}
Python
def ishan(n):
if n < 100:
return 1
elif n == 1000:
return 0
else:
temp1 = (n%100)//10 - n//100;
temp2 = n%10 - (n%100)//10;
if temp1 == temp2:
return 1
else:
return 0
num = 0;
n = int(input())
for i in range(n):
if ishan(i+1) == 1:
num += 1
print(num);
문제 출처
https://www.acmicpc.net/problem/1065