본문 바로가기

분할정복3

백준 [java 자바] 1629번 : 곱셈 이 문제는 정말 오랜만에 혼자 해결하지 못한 문제입니다. 아무리 풀어도 답이 나오지 않아서 다른 블로그 글을 참고했고 덕분에 분할 정복에 대해 알게 되었습니다. 언뜻 보기에는 쉬워 보이지만 사실 굉장한 장애물이 있습니다. 바로! 입력받은 수를 곱하면 long자료형이어도 넘어갈 수 있다는 것이다. 그래서 내가 다른 방법으로 풀었을 때 방법은 맞지만 틀렸습니다가 나온 이유인 것 같다. 이 문제에서 가장 중요한 개념은 거듭제곱을 분할하는 것 그러니까 10^5 = 10^2 * 10^2 * 10 이렇다는 것을 이용하는 것이다. 그리고 (a*a)% c와 (a% c)*(a% c)% c는 같다는 것이다. 근거는 (a*c + b)*(a*c+b) 하고 c로 나누어주면 어차피 남는 것은 b*b이기 때문이다. package .. 2022. 8. 13.
백준 [java 자바] 2447번 : 별찍기-10 이 문제는 예전에도 도전해 본 적이 있는데 그때는 이걸 어떻게 푸나 하고 넘어갔지만 지금은 풀 수 있어서 기분이 좋았다. 확실히 꾸준히 하니 실력이 느는 것 같다. 이제까지는 실버 1문 제 만 풀었는데 이제 골드 5로 넘어가고자 한다. 빨리 골드로 승급하고 싶다! n은 3의 x제곱이고 x만큼 저 패턴을 반복한다고 보면 된다. import java.util.*; import java.io.*; class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBu.. 2022. 8. 12.
백준 [java 자바] 1074번 : Z 언뜻 볼 때는 재귀 함수를 써야 하나 라는 생각이 들었는데 아무래도 시간이 0.5초 밖에 주어지지 않아서 다른 수학적인 방법으로 접근하면 좋겠다고 생각했다 import java.io.*; import java.util.*; class Main { public static void main(String[] arg) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader (System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int a = Integer.parseInt(st.. 2022. 8. 11.