본문 바로가기

백준

(14)
[JAVA] 백준_2751 [문제] 2751번: 수 정렬하기 2 (acmicpc.net) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 단순하게 Arrays.sort(배열)을 썼다가 시간초과가 나왔다. 그래서 찾아보니 Collections 인터페이스의 sort 함수를 이용하면 시간복잡도가 훨씬 줄어든다는 것을 알았다. [백준] 2751번 : 수 정렬하기 2 - JAVA [자바] (tistory.com) 이 분의 풀이를 참고했다. Collections (컬렉션)은 제네릭 기법을 사용하기 때문에 Collections.sort(..
[JAVA] 백준_2798 [문제] 2798번: 블랙잭 (acmicpc.net) 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net [알고리즘] 브루트포스 카테고리의 첫 번째 문제이다. 브루트포스란 무차별 대입 or 전수조사 즉, 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식이다. 따라서 이 문제에서는 가능한 모든 합을 확인하기 위해 삼중 반복문을 사용할 것이다. [풀이]
[JAVA] 백준_9063 [문제] 9063번: 대지 (acmicpc.net) 9063번: 대지 첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다. www.acmicpc.net [알고리즘] 입력 받은 값을 순서대로 x, y로 놓고 minX, maxX, minY, maxY를 구한다. (maxX-minX)(maxY-minY)가 넓이가 된다. [내 풀이]
[JAVA] 백준_2581 2581번: 소수 (acmicpc.net) 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net [문제] 처음에는 '에라토스테네스 체 알고리즘'을 몰라서 그냥 반복문으로 하나씩 나눠서 나머지가 0인 숫자가 2개인 걸로 소수를 구했다. 근데 에라토스테네스 체 알고리즘을 알게되었고, boolean 타입의 배열을 생성하고 소수면 false 소수가 아니면 true를 이용해 문제를 해결했다. 1. 처음 풀이 [문제 설명] 배열의 크기를 알 수 없으므로 Integer type의 ArrayList를 생성한다. 약수의 개수(count)가 ..
[JAVA] 백준_9506 9506번: 약수들의 합 (acmicpc.net) 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net [문제] 1. [설명] BufferedReader를 이용해 숫자를 입력받는다. 첫 번째 for문에서 StringBuilder의 append 함수를 이용해 약수를 추가한다. sb를 StringTokenizer를 이용해 약수를 토큰으로 분리한다.(StringTokenizer은 String을 인자로 받으므로 sb.toString()으로 형변환을 해줘야 한다.) (배열의 크기가 정해지지 않았으므로 첫 번째 for..
[JAVA] 백준_2501 2501번: 약수 구하기 (acmicpc.net) 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net [문제] [문제 분석] 배열로 풀든, StringTokenizer로 풀든 일단 약수들을 모아놔야 하기 때문에 반복문을 작성한다. 두 번째로 입력받은 숫자를 n이라고 하면 약수의 n번째 숫자를 출력해야 하니까 배열의 n번째 숫자를 바로 출력한다. *Scanner가 더 BufferedReader보다 더 편리하지만 속도 측면에서 더 유리하기 때문에 BufferedReader 쓰는 연습을 하는 중이다. 하지만 BufferedReader는 입력값이 무엇이든 문자열로 받아오기 때문에 타입을 바꾸기..