본문 바로가기

전체 글

(107)
[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는 입력값이 무엇이든 문자열로 받아오기 때문에 타입을 바꾸기..