본문 바로가기
728x90

코딩/백준-자바88

[자바] 백준 16953번: A -> B https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 좀 전에 풀었던 문자열 바꾸기와 굉장히 닮은 문제였다 마찬가지로 큰 수를 작은수로 바꿔나가는 편이 좋을 것 같다는 판단 A를 B로 만들기 위해서 두 가지 방법은 1번) 2를 곱하거나, 2번) 10을 곱하고 1 더하기 (뒷자리에 1을 붙이는것) 이다. 10을 곱하고 1더하는 방법이 수를 더 크게 부풀리기 때문에 이 방법을 많이 써야 연산횟수를 줄일 수 있다. . . A를 B로 바꾸려고 하면 너무 많은 경우의 수가 생기기 때문에, B를 감소시켜 A로 만들어야 한다. B의 끝자리 숫자가 1이고, 10으로 나눴을 때 A보다 크다.. 2022. 12. 30.
[자바] 백준 12904번: A와 B https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net S문자열로 T를 만들려면 너무 많은 경우의 수가 생긴다. 그래서 반대로 T문자열을 하나씩 줄여서 S가 될 수 있는지 확인하는 방법을 쓰기로 했다. 문자열 T가 S와 같은 길이가 될 때 까지 끝에서부터 한 문자씩 뗀다. 끝에있는 문자가 A라면 그냥 떼고 끝에있는 문자가 B라면 뗀 후에 문자열을 뒤집는다. 마지막으로 T와 S가 같은 길이가 되었다면 T와 S가 같은.. 2022. 12. 30.
[자바] 백준 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net 인접행렬로 코드를 작성했다가 메모리초과가 났다. 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class P24479 { st.. 2022. 12. 30.
[자바] 백준 1929번: 소수 구하기 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 중학교 다닐 때 수학시간에 선생님이 이건 솟수로 발음해야한다고 하시면서...설명해줬던게 갑자기 생각이 났다 1보다 큰 정수 중 1과 자기자신만을 약수로 가진 수를 소수라고 하는데 X 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 .. 2022. 12. 30.
[자바] 백준 1931번: 회의실 배정 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 동작 설명 각각의 회의 정보를 입력받는다 입력받은 회의들을 끝나는시간을 기준으로 오름차순 정렬한다. d[]라는 배열을 하나 만들어서 d[i] 에는 i시간까지 수행가능한 최대 회의 개수를 저장할 수 있도록 했다. 이제 각각의 회의들을 순회하면서 d[]배열을 채우면 된다. d[i]는 d[i-1]로 일단 값을 갱신한다 (i시간에는 당연히 i-1시간보다 더 많은 회의를 수행하거나, 같은 수의 회의를 수행할 것이니까) 그리고 i시간에 끝나는 회의를 찾는다. d[해당회의 시작시간]+1한 값과 현재 d[i]값을 비교해서, 더.. 2022. 12. 29.
[자바] 백준 2212번: 센서 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 설명 어느 한 영역에 집중국을 두 개 세우게 되면, 그 영역을 두 개의 영역으로 나눌 수 있게 된다. 그럼 집중국은 어디에 세우는게 좋을까? ->센서와 센서 사이 거리가 가장 긴 곳을 기준으로 영역을 나누면 될 것 같다. ->집중국이 K개면 거리가 가장 긴 K-1개의 영역을 선택하면 된다. 그럼 영역이 K개로 나뉘고 각각의 영역에는 집중국이 하나씩 있다고 생각하면 된다. .. 2022. 12. 25.
[자바] 백준 11000번: 강의실 배정 https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 프로그램 동작 설명 수업시간이 가장 많이 겹칠 때, 겹치는 수업의 개수가 몇 개인가? 저번에 풀었던 문제처럼~ 뭔가 스택이나 큐같은걸 써야하나 곰곰이 생각해봤는데 우선순위 큐를 사용하는게 좋을 것 같았다. 각각의 수업을 Job이라는 클래스를 이용해서 표현하려 했다. 멤버변수로 수업의 시작시간, 끝나는시간인 start - end가 있다. 우선순위 큐는 Job들을 담을 건데, job의 end(수업의 끝나는시간)을 기준으로, 가장 작은게 head에 .. 2022. 12. 25.
[자바] 백준: 2493 탑 https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 처음 작성했던 코드(실패) 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; import java.util.Vector; public class Main { publi.. 2022. 12. 23.
728x90