본문 바로가기

정올문제소스코드

Jungol_Beginner_수학1

1692 : 곱셈

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int a, b;
        
        a = Integer.parseInt(in.readLine());
        b = Integer.parseInt(in.readLine());
        
        int n1, n2, n3; //1의자리수 10의자리수 100자리수 
        
        n1 = b % 10;
        n2 = b / 10 % 10;
        n3 = b / 100;
        
        bw.write(String.format("%d\n", a * n1));
        bw.write(String.format("%d\n", a * n2));
        bw.write(String.format("%d\n", a * n3));
        bw.write(String.format("%d\n", a * b));
        bw.flush();
        
    }
 
}

곱셈 과정을 출력하면 되는 문제.


1430 : 숫자의 개수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int a, b, c;
        
        a = Integer.parseInt(in.readLine());
        b = Integer.parseInt(in.readLine());
        c = Integer.parseInt(in.readLine());
        
        int gop = a * b * c;
        int arr[] = new int [11];
        int i;
        
        while(true) {
            arr[gop % 10]++;
            gop = gop / 10;
            if (gop == 0) break;
        }
        
    
        for (i = 0; i < 10; i++) {
            bw.write(String.format("%d\n", arr[i]));
            bw.flush();
        }
    }
}

주어진 숫자를 곱해, 0~9까지의 숫자가 몇개가 쓰였는지 출력하는 문제.


1071 : 약수와 배수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st ;
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n;
        int arr[] = new int [51];
        int m;
        int i;
        
        n = Integer.parseInt(in.readLine());
        st = new StringTokenizer(in.readLine());
        for (i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        m = Integer.parseInt(in.readLine());
        
        int yaksu = 0;
        int baesu = 0;
        
        for (i = 0; i < n; i++) {
            if (m % arr[i] == 0) {
                yaksu += arr[i];
            }
            if (arr[i] % m == 0) {
                baesu += arr[i];
            }
        }
        
        bw.write(String.format("%d\n", yaksu));
        bw.write(String.format("%d\n", baesu));
        bw.flush();
    }
 
}

숫자를 입력받아 그 뒤에 입력받는 m의 정수와 배수를 찾는데, 입력받은 숫자가 해당할시 합을 출력하는 문제.


1402 : 약수 구하기

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
  
public class Main {
  
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
          
        int n, k;
          
        n = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());
      
        int i, j;
        int arr[] = new int [10001];
        int cnt = 1;
          
        for (i = 1; i <= n; i++) {
            if (n % i == 0) {
                arr[cnt++] = i;
            }
        }
          
        if (arr[k] == 0) {
            bw.write("0");
            bw.flush();
        }
        else {
            bw.write(String.format("%d ", arr[k]));
            bw.flush();
        }    
    }
}

n과 m을 입력받아 n의 약수 중 m번째에 있는 약수를 출력하는 문제.


2809 : 약수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n;
        int i;
        
        n = Integer.parseInt(st.nextToken());
        
        int arr[] = new int [10001];
        
        int cnt=0;
        for (i = 1; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                bw.write(String.format("%d ", i));
                if(n/i != i) arr[cnt++] = n/i;
            }
        }
        
        for(i=cnt - 1; i >= 0; i--) {
            bw.write(String.format("%d ", arr[i]));
        }
        bw.flush();  
    } 
}

숫자를 입력받아 그 숫자의 약수를 모두 출력하면 되는 간단한 문제.


1658 : 최대공약수와최소공배수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int a, b;
        
        a = Integer.parseInt(st.nextToken());
        b = Integer.parseInt(st.nextToken());        
    
    
        int choide = 1;
        int choiso = 1;
        int i;
        
        for (i = 1; i <= a; i++) {
            if (a % i == 0 &&  b % i == 0) {
                choide = i;
            }
        }
        
        for (i = a; i <= a*b; i += a) {
            if (i % a == 0 && i % b == 0) {
                choiso = i;
                break;
            }
        }
        
        bw.write(String.format("%d\n%d", choide, choiso));
        bw.flush();
        
    }
}

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 출력하면 되는 간단한 문제


1002 : 최대공약수, 최소공배수

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int n;
        n = Integer.parseInt(st.nextToken());
        int arr[] = new int [n];
        int i;
        
        st = new StringTokenizer(in.readLine());
        for (i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        
        int g = arr[0];
        int l = arr[0];
        
        for (i = 1; i < n; i++) {
            g = gcd(g, arr[i]);
            l = lcm(l, arr[i]);
        }
        
        bw.write(String.format("%d %d", g, l));
        bw.flush();
    }
 
    private static int lcm(int a, int b) {
        // TODO Auto-generated method stub
        return a * b / gcd(a, b);
    }
 
    private static int gcd(int a, int b) {
        // TODO Auto-generated method stub
        if (a % b == 0) return b;
        return gcd(b, a%b);
    }
}

여러 수를 입력받아 최대공약수와 최소공배수를 출력하면 되는 문제

'정올문제소스코드' 카테고리의 다른 글

Jungol_Beginner_도형만들기1  (0) 2022.12.24
2567 : 싸이클  (0) 2022.03.18
1490 : 다음 조합(next combination)  (0) 2022.03.18
2817 : 로또(Lotto)  (0) 2022.03.18
1021 : 장난감조립  (0) 2021.12.05