백준문제풀이46 [백준] 2609번 : 최대공약수와 최소공배수(JAVA) https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. 최대공약수(Greatest Common Divisor)와 최소공배수(Least Common Multiple)를 구하는 문제이다. GCD를 구하는 가장 쉬운 방법은 "유클리드 호제법"을 이용하는 것이다. LCM을 구하는 방법은 두 수의 곱과 두 수의 최대공약수를 이용하여 구할 수 있다. 여담으로 유클리드 호제법은 인류 최초의 알고리즘이라고 .. 2019. 11. 27. [백준] 10814번 : 나이순 정렬(JAVA) https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 12단계 정렬의 카테고리에 포함되어 있는 문제이다. 입력은 회원의 수가 입력되고 회원의 수 만큼 회원의 나이와 이름이 순서대로 입력된다. 입력된 값들을 나이 순서대로 정렬하는데, 나이가 같으면 먼저 입력받은 순서대로 정렬을 해야한다. 정렬을 해도 입력된 순서가 바뀌지 않은 정렬을 Stable sort라고 하며 대표적.. 2019. 11. 21. [백준] 1181번 : 단어 정렬(JAVA) https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 12단계 정렬의 카테고리에 포함되어 있는 문제이다. 알파벳 소문자로 이루어진 N개의 단어가 들어왔을 때의 조건은 1. 길이가 짧은 것 부터 2. 길이가 같으면 사전 순으로 이 두개의 조건을 지켜서 문제를 제출하면 된다. Merge Sort로 구현을 하였으며 제출할 때 package를 지우는 것을 깜빡하고 3번이나 틀린 .. 2019. 11. 20. [백준] 11653번 : 소인수분해(JAVA) https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. 정수 N이 주어졌을 때, 각 줄마다 소인수분해 과정을 출력하는 문제이다. 먼저 가장 작은 수인 2부터 소인수 분해를 시작하고 나누어지지 않는다면 1씩 증가시켜 나누는 방법을 선택하였다. import java.util.Scanner; public class Question_11653 { public static void main(String[] args) { Scanner sc = new S.. 2019. 11. 20. [백준] 1037번 : 약수(JAVA) https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. N이라는 숫자의 약수가 있을 때, 입력으로 첫번 째 줄에 1과 N을 제외한 N의 약수의 개수가 주어지고 둘 째 줄에는 그 약수들이 입력으로 들어온다. 나는 이 입력으로 들어온 숫자들의 최댓값과 최솟값을 곱하면 N이 나온다는 방법으로 문제를 해결하였다. .. 2019. 11. 20. [백준] 5086번 : 배수와 약수(JAVA) https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스 www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계 수학3의 카테고리에 포함되어 있는 문제이다. 간만.. 2019. 11. 18. [백준] 11650번 : 좌표 정렬하기(JAVA) https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 12단계 정렬의 카테고리에 포함되어 있는 문제이다. 시간제한은 1초인데 좌표의 개수는 최대 10만개이니 시간복잡도가 O(NlogN)인 정렬방법으로 풀어야한다. 나는 자바 라이브러리에 포함된 정렬이 아닌 따로 합병정렬 클래스를 선언하여 만들었다. 4번의 도전끝에 성공하였는.. 2019. 11. 18. [백준] 10989번 : 수 정렬하기 3(JAVA) https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 위의 문제는 Baekjoon Online Judge의 단계별로 풀어보기 중 12단계 정렬의 카테고리에 포함되어 있는 문제이다. 카운팅정렬(계수 정렬)을 이용하여 풀어야 하는 문제이며 수의 범위가 작을 때 더욱 빠르게 정렬할 수 있는 방법이 계수 정렬이다. 처음에는 입력을 Scanner로 썼을 때는 시간초과가 났었다. 그래서 더 빠르게 입력하고 출력하는 방법인 Buffer방법을 쓰니 통과가 되었다. 알고리즘은 나중에.. 2019. 11. 17. [백준] 2164번 : 카드2(JAVA) https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리 www.acmicpc.net 위의 문제는 Baekjoon Online Judge의 단계별로 풀어보기 중 18단계 큐, 덱의 카테고리에 포함되어 있는 문제이다. 큐의 시.. 2019. 11. 17. 이전 1 2 3 4 5 6 다음