김민쏭
REPOSITORY
김민쏭
전체 방문자
오늘
어제
  • 분류 전체보기 (69)
    • 원앙둥지 (17)
      • 2022 홋카이도 (6)
      • 2024 후쿠오카 (3)
    • 프로그래밍 (51)
      • 정리노트 (11)
      • Spring (5)
      • Javascript (7)
      • Database (7)
      • 알고리즘 (11)
      • 좋은글_갈무리 (3)
      • 기타 (3)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
김민쏭

REPOSITORY

백준 알고리즘 1009번 : 분산처리 (C++, JAVA)
프로그래밍/알고리즘

백준 알고리즘 1009번 : 분산처리 (C++, JAVA)

2019. 10. 21. 16:06

이번 문제는 접근 자체는 잘 했는데, 자잘한 처리에서 시간을 잡아먹었던 것 같다.

제곱결과의 첫번째 자리수를 구하면 되는 문제였는데, 값이 엄청나게 커졌을 때를 위하여 미리미리 처리해주는 단계가 필요했다. 

 

C++

 

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
#include <iostream>
#include <math.h>
 
using namespace std; 
 
int customPow(int a, int b){
    
    int res = 1;
    
    for(int i=0 ;i<b; i++){
        
        if(res > 10) // 값이 너무 커지는 것을 방지하기 위한 사전 처리
            res = res % 10;
                    
        res *= a % 10;
    }
    
    return res % 10;
}
 
int main() {
    
    int t;
    int solve;
    
    scanf("%d", &t);
    
    int a[t], b[t];
    
    for(int i=0; i<t; i++){
        scanf("%d %d", &a[i], &b[i]);        
        solve = customPow(a[i], b[i]);
        
        if(solve == 0)
            printf("10 \n");
        else
            printf("%d \n", solve);
    }
    
    return 0;
}
Colored by Color Scripter
cs

 

다 구현하고나서도, 1의 자리가 0일 경우, 10을 출력해줘야하는데 (10번째 컴퓨터) 그 처리도 빼먹었다가 또 오답처리를 받았다.

또, 각 입력마다 출력을 해줘야한단다. 분명 문제 예제 출력엔 입력을 다 받고 출력하는거였는데...

 

JAVA 코드 또한 비슷하게 짜서, 함께 첨부하여 올린다.

 

JAVA

 

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
package java_algorithm;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Beakjoon_1009 {
 
    public static void main(String[] args) throws Exception {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int t = Integer.parseInt(br.readLine());
        
        int a, b;
        int result;
        
        for(int i=0; i<t; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            
            a = Integer.parseInt(st.nextToken());
            b = Integer.parseInt(st.nextToken());
            
            result = customPower(a,b);
            
            if(result == 0) {
                System.out.println("10");
            }else {
                System.out.println(result);
            }
        }
        
    }
    
    public static int customPower(int a, int b) {
        
        int res = 1;
        
        for(int i=0; i<b; i++) {
            
            if(res > 10)
                res %= 10;
            
            res *= a;
        }
        
        return res % 10; 
    }
    
}
 
Colored by Color Scripter
cs
저작자표시 (새창열림)

'프로그래밍 > 알고리즘' 카테고리의 다른 글

백준 알고리즘 2420번 : 사파리월드 (C++, JAVA)  (0) 2019.10.21
백준 알고리즘 1110번 : 더하기 사이클 (C++, JAVA)  (1) 2019.10.21
백준 알고리즘 1920번 : 수 찾기 (JAVA)  (0) 2019.10.21
백준 알고리즘 1920번 : 수 찾기 (C++)  (0) 2019.10.21
백준 알고리즘 1037번 : 약수 (JAVA)  (0) 2019.10.19
    '프로그래밍/알고리즘' 카테고리의 다른 글
    • 백준 알고리즘 2420번 : 사파리월드 (C++, JAVA)
    • 백준 알고리즘 1110번 : 더하기 사이클 (C++, JAVA)
    • 백준 알고리즘 1920번 : 수 찾기 (JAVA)
    • 백준 알고리즘 1920번 : 수 찾기 (C++)
    김민쏭
    김민쏭
    예예,,,저장소임더,,,

    티스토리툴바