250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 막내의막무가내 안드로이드 코틀린
- 막내의 막무가내
- 부스트코스에이스
- 막무가내
- 막내의막무가내 플러터
- 주택가 잠실새내
- 막내의막무가내 안드로이드 에러 해결
- 막내의막무가내 안드로이드
- 안드로이드
- 막내의막무가내 일상
- 막내의막무가내 코틀린
- 막내의막무가내 플러터 flutter
- 부스트코스
- flutter network call
- 2022년 6월 일상
- 안드로이드 Sunflower 스터디
- 막내의막무가내 코틀린 안드로이드
- 프래그먼트
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 rxjava
- 막내의막무가내
- 막내의막무가내 알고리즘
- 주엽역 생활맥주
- 막내의막무가내 프로그래밍
- 프로그래머스 알고리즘
- 안드로이드 sunflower
- Fragment
- 막내의막무가내 SQL
- 막내의막무가내 목표 및 회고
- 막내의 막무가내 알고리즘
Archives
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[알고리즘] 백준 1629 곱셈 - 분할정복- 자바 본문
728x90
1629번: 곱셈
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
www.acmicpc.net
백준 분할정복 단계별풀기 네번째 곱셈 문제를 풀어봤습니다.
처음 단순하게 곱하고 나눠주고 반복문 돌렸다가 시간복잡도 때문에 시간초과가 났습니다.
분할정복 단계므로 분할해서 재귀를 사용해 풀었습니다.
밑 공식대로 풀면 됩니다.
풀이는 다음과 같습니다.
[Java]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long A = sc.nextLong(); //밑
long B = sc.nextLong(); //지수
long C = sc.nextLong();
System.out.println(cal(A, B, C) % C);
}
private static long cal(long a, long b, long c) {
if (b == 0) {
return 1;
} else if (b == 1) {
return a;
} else if (b % 2 == 0) { //짝수 지수
long n = cal(a, b / 2, c) % c;
return (n * n) % c;
} else { //홀수 지수
long n = cal(a, b / 2, c) % c;
return (((n * n) % c) * a) % c;
}
}
}
참고 : onsil-thegreenhouse.github.io/programming/problem/2018/03/29/problem_math_power/
[Problem] 어떤 수의 n제곱 구하기(백준 1629번) - Onsil's blog
초짜 개발자 온실의
스터디 블로그
onsil-thegreenhouse.github.io
728x90
'알고리즘 > 분할정복' 카테고리의 다른 글
[알고리즘] 백준 1074 Z -분할정복- 자바 (0) | 2020.11.10 |
---|---|
[알고리즘] 백준 1780 종이의 개수 -분할정복- 자바 코틀린 (0) | 2020.10.18 |
[알고리즘] 백준 1992 쿼드트리 -분할정복- 자바 (0) | 2020.10.18 |
[알고리즘] 프로그래머스 쿼드압축 후 개수 세기 (월드 코드 챌린지 시즌 1) -dfs, 백트랙킹- 자바 코틀린 (0) | 2020.10.14 |
Comments