본문 바로가기

728x90

자바

[백준알고리즘] 1629번: 곱셈 -Java [백준알고리즘] 1629번: 곱셈 -Java https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 왜 틀리지 왜 틀리지... 했는데 자료형 때문이었다... 찍어보니 초과해서 -값들이 우수수수 나오는 걸 보고 금방 해결했다 ㅜㅜ 왜 생각하지 못했을까 아무튼 이 문제는 분할정복 문제이다. 이 문제를 풀기 위해서는 "빠른 모듈로 거듭제곱 법"을 알아야 한다. 간단하게 설명하자면, 정수 A를 B로 나눈 나머지 A%B는 A mod B로 표현이 가능하다. 이때, (A^2) mod B = (A*A) mod B = ((A mod.. 더보기
[백준알고리즘] 9663번: N-Queen -Java [백준알고리즘] 9663번: N-Queen -Java https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 드디어! BackTracking 분류에서 대표적인 백트래킹 문제인 N-Queen문제가 나왔다. 체스판에서 퀸은 가로, 세로, 대각선 방향으로 모두 길이 제한 없이 이동이 가능하다. 즉 각자의 가로, 세로, 대각선에 다른 퀸이 놓이지 않게 N X N 행렬 위에 N개의 퀸을 올리면 되는 문제이다. 이 문제를 처음에 주어진 것처럼 NxN행렬로 만들어서 구하다가 메모.. 더보기
[백준알고리즘] 11866번: 조세퍼스 문제 0 -Java [백준알고리즘] 11866번: 조세퍼스 문제 0 -Java https://www.acmicpc.net/problem/11866 11866번: 조세퍼스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 큐, 덱에 있는 문제이고, 큐를 이용한 문제라고 나와있는데 굳이 큐를 사용해야 되나? 싶은 문제였다. 여기서 큐의 특징 FIFO가 나타날만한 부분은 일치하는 값을 차례대로 뽑아서 큐에 넣은 후에 마지막에 한 번에 쭉 출력해 내는 것이다. 굳이 사용하고자 한다면, 둥글게 앉은 다음에 예에서 3번째 사람마다 빠진다고 했을 때를 예를 들어보면 다음과 같이 이용이 가능하다. 앉아있는 상태 제외된 상태 ... ... poll 해준 .. 더보기
[백준알고리즘] 1874번: 스택 수열 -Java [백준알고리즘] 1874번: 스택 수열 -Java https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 처음에 문제를 이해하는 데 이상했었다. 문제를 설명하자면 1부터 n까지의 수를 차례대로 stack에 push 하거나 pop 해서 주어진 수열을 만들 수 있는가를 물어보는 문제이다. 이에 대해서 문제를 풀기 위해서는 stack에 push할 때의 조건과 pop 시킬 때의.. 더보기
[백준알고리즘] 4949번: 균형잡힌 세상 -Java [백준알고리즘] 4949번: 균형잡힌 세상 -Java https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이룰 수 있다. 모든 왼쪽 대괄호("[")는 오른쪽 대 www.acmicpc.net Stack문제이지만 문제의 조건들만 잘 맞춰준다면 어렵지 않은 문제이다. 일단.. 더보기
[백준알고리즘] 10773번: 제로 -Java [백준알고리즘] 10773번: 제로 -Java https://www.acmicpc.net/problem/10773 10773번: 제로 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ www.acmicpc.net stack문제이다. 마침 Java 연습하고 있었는데 개이득 봤다. 좋았다! Java에서는 j.. 더보기
[백준알고리즘] 2004번: 조합 0의 개수 -Java [백준알고리즘] 2004번: 조합 0의 개수 -Java https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 n, m(0≤m≤n≤2,000,000,000, n!=0)이 들어온다. www.acmicpc.net 이전 문제였던 팩토리얼 0의 개수와는 조금 다르다. 팩토리얼 0의 개수 문제에서는 5로 나누고 5의 제곱으로 나누고 했던 이유는 5 이전에 이미 2가 존재해서 10이 당연히 되기 때문에 5의 제곱수들로만 풀어도 가능했다. 하지만 이항계수에서는 분자를 분모로 약분할 수 있기 때문에 2의 존재 가능성의 여부도 따져줘야 한다. 즉 약분을 했을 때 10을 몇 개나 곱하느냐를 구하면 되는 문제이다. 따라서 5의 개수와 2의 개수를 각각 구해주고 둘 중의.. 더보기

728x90