[백준] 1065번 한수 풀이 코드 (C/C++/Java 자바/Python 파이썬)

풀이

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

Related posts

블로그 이사

[Codeforces] 50A Domino piling 풀이 코드 (C/C++/Java /Python)

[Codeforces] 1538B Friends and Candies 풀이 코드 (C/C++/Java /Python)