Java - 알고리즘

백준 Java - 1단계 입출력과 사칙연산

TerianP 2021. 9. 6.
728x90

오늘부터는 자바 공부와 함께 기초 알고리즘 공부도 같이 해보려고 한다.

알고리즘 공부는 https://www.acmicpc.net/ 백준 알고리즘 사이트를 참고하여 단계별로 풀 예정이다.

 

1. 입출력과 사칙연산

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.util.Scanner;
 
public class Main { // 백준에서 java로 문제를 풀때는 반드시 Main 클래스를 기본으로 잡아야하더라
    public static void main(String[] args) {
        System.out.println("Hello world!"); // 2557번
        
        System.out.println("강한친구 대한육군"); // 10718번
        System.out.println("강한친구 대한육군");
        
        cat(); // 10171번
        dog(); // 10172번
        colculator1(); // 1000, 1001, 10998, 1008 번
        colculator2(); // 10869번
        colculator3(); // 10430번
        colculator4(); // 2588번
    }
 
    static void cat() { // 10171번
        System.out.println("\\    /\\");
        System.out.println(" )  ( ')");
        System.out.println("(  /  )");
        System.out.println(" \\(__)|"); 
    }
    
    static void dog() { // 10172번
        System.out.println("                     ");
        System.out.println("|\\_/|");
        System.out.println("|q p|   /}");
        System.out.println("( 0 )\"\"\"\\"); // \" 로 " 출력 가능
        System.out.println("|\"^\"`    |");
        System.out.println("||_/=\\\\__|");
    }
 
    }
    
    static void colculator1() { // 1000, 1001, 10998, 1008 번
        Scanner scan = new Scanner(System.in);
        
        double A = scan.nextInt();
        double B = scan.nextInt();
        
        System.out.println((int)(A+B));
        System.out.println((int)(A-B));
        System.out.println((int)(A*B));
        System.out.println(A/B);
        
    }
    
    static void colculator2() { // 10869번
        Scanner scan = new Scanner(System.in);
        
        double A = scan.nextInt();
        double B = scan.nextInt();
        
        if(1<=&& A <=10000 && 1<=&& B <=10000 ) {
            // A B 모두 && 연산자로 묶어서 범위를 만족할 수 있게함
            System.out.println((int)(A+B));
            System.out.println((int)(A-B));
            System.out.println((int)(A*B));
            System.out.println((int)(A/B));
            System.out.println((int)(A%B));
            
            //문제가 int 형으로 답변을 받는 걸 요구해서 형변환하여 int로 넣었음
            // (int) 부분만 지우면 진짜 계산기처럼 소숫점도 계산함
            // scan.nextDouble() 로 받는다면 실수도 받을 수 있음
        }else {
            System.out.println("범위 초과 다시 입력");
        }
    }
    
    static void colculator3() { // 10430번
        Scanner scan = new Scanner(System.in);
        
        int A = scan.nextInt();
        int B = scan.nextInt();
        int C = scan.nextInt();
        
        System.out.println((A+B)%C);
        System.out.println(((A%C)+(B%C))%C);
        System.out.println((A*B)%C);
        System.out.println(((A%C)*(B%C))%C);
    }
    
    static void colculator4() { // 2588번
        //백준 2588
        Scanner scan = new Scanner(System.in);
        
        int iA = scan.nextInt(); // iA 에는 정수형 입력받음
        String strB = scan.next(); // strB 에는 String 형식으로 입력받음
        
        int arrB[] = new int[3];
        
        
        for(int i=0; i<arrB.length; i++) {
            arrB[i] = strB.charAt(i)-'0'// StrB 에서의 값을 하나씩 가져와서 arrB에 넣는데 문자열을 숫자로 바꿔서 넣어줌 
        }
        
        int num100 = iA*arrB[0]; // 입력받은 숫자 * 백의 자리 숫자
        int num10 = iA*arrB[1]; // 입력받은 숫자 * 십의 자리 숫자
        int num1 = iA*arrB[2]; // 입력받은 숫자 * 일의 자리 숫자
        int result = (num100*100)+(num10*10)+num1;
        
        System.out.println(num1);
        System.out.println(num10);
        System.out.println(num100);
        System.out.println(result);
        
    }
 
cs

사칙연산 문제는 한꺼번에 colculator1 과 colculator2  로 묶어서 풀었고, 

맨 마지막 2588 번 같은 경우는...첫번째 숫자는 int로 그대로 받고, 두번째 숫자는 String 으로 받되 이를 다시 배열 만들어서 넣어서 일의 자리 숫자, 십의 자리 숫자, 백의 자리 숫자를 구하고 첫번째로 받은 숫자와 곱하는 방법을 취했다.

 

짜고 보니까 뭔가 더 좋은 방법도 있을것 같고, 뭔가 이상하긴한데...그래도 지금 현재로써는 내가 배운 것들을 활용해서 짜보았다.

댓글