Java(18)
-
[IntelliJ/MacOS] JDK 버전 맞지 않는 문제 해결
Mac OS에서 IntelliJ에서 아래와 같은 메세지가 뜨면서 프로젝트가 실행이 안되었다. (use -source 7 or higher to enable multi-catch statement) 나는 분명 JAVA 8버전 쓰고 있는데 무슨 말도안되는 소린가해서 일단 다시 JAVA 버전 확인 해보았다. $ java -version 근데 자꾸 1.5로 설정되어있다고 떠서 확인 결과 IntelliJ에서 JDK 설정이 잘못된 것을 확인; 아래 방법으로 문제 해결했다. 1. FIle > Project Structure > Module > (프로젝트 더블클릭) > Sources > Language level > JDK 버전 설정 2. Preferences > Build, Execution, Deployment >..
2021.01.08 -
[백준(baekjoon) 1977] 완전제곱수 / java Math 함수
[백준(baekjoon) 1977] 완전제곱수 문제 백준 1977 m이상 n이하인 완전제곱수들을 구하고 합과 최소 값을 출력하라. 예시 : 60이상 100이하 (64, 81, 100) = 245, 64 주의 : 조건에 해당하는 완전제곱수가 하나도 없다면 -1을 출력한다. 해결 알고리즘 간단한 수학문제이다. 그냥 이 문제를 풀면서 자주 쓰이는 java Math함수들을 정리해봤다. 방법 m과 n의 제곱근을 구한다. m의 제곱근은 올림을 해준다. (크거나 작아야 하므로) n의 제곱근은 내림을 해준다. (작거나 같아야 하므로) 그 사이의 수들을 제곱해준다. = 완전제곱근 구현 java Math 함수 올림 : Math.ceil(a) 매개변수 타입 : double 반환 타입 : double 내림 : Math.flo..
2018.09.04 -
[백준(baekjoon) 6588] 소수 구하기
[백준(baekjoon) 6588] 소수 구하기 문제 백준 6588 ‘4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다.’ 하나 이상의 테스트 케이스 T가 주어질 때(0이 나오면 끝), 다음과 같은 규칙으로 출력하라 답이 존재 : T = a + b출력 (답이 여러개일 경우 b - a가 가장 큰 것) 답이 없음 : Goldbach's conjecture is wrong.출력 예시 8 = 3 + 5 20 = 3 + 17 42 = 5 + 37 해결 알고리즘 소수를 만드는 방식은 에라토스테네스의 체를 이용하였다. 자세한 방법은 에라토스테네스의 체로 소수 구하기 참고! 방법 T = a + b를 만족하는 홀수 소수 a, b는 많을 것이다. 따라서, 가장 큰 b - a를 찾기 위해 조건을 만족하는 가장 ..
2018.08.22 -
[백준(baekjoon) 1929] 소수 구하기 / 에라토스테네스의 체
[백준(baekjoon) 1929] 소수 구하기 문제 백준 1929 M 이상 N 이하인 소수를 모두 출력하시오. (1≤M≤N≤1,000,000) 해결 알고리즘 두가지 방식으로 풀었다. 1. 소수로 나누기 소수인지 확인하기 위해 자신보다 작은 소수들로 모두 나누어 확인하는 방법 n개의 수에 자신보다 작은 소수들의 개수k만큼 모두 확인하여야 한다. 곱해서 n이 되는 수 중 가장 큰 수인 이하로만 검사하면 된다. 2. 에라토스테네스의 체 소수의 배수들 지워나가는 방법 O(n log log n) 시간복잡도를 가진다. 자세한 내용 방법 소수 여부를 저장해 둘 [N + 1]크기의 배열을 생성한다. 가장 작은 소수 2부터 시작하여 수들을 차례대로 확인한다. 지워지지 않은 경우 해당 수는 소수이다. 소수의 배수들을 모..
2018.08.22 -
[백준(baekjoon) 1373] 2진수 8진수
문제 백준 1373 입력되는 2진수를 8진수로 바꾸어라. 2진수의 길이는 1,000,000을 넘지 않는다. 해결 3개씩 묶어 8진수로 바꾸어주면 된다. (2진수 -> 10진수로 바꾸는 방법과 동일) 뒤에서 부터 묶기 때문에 앞에 부족한 부분을 어떻게 하느냐가 문제 나는 input을 char []으로 받아 index가 범위를 벗어날 때 아무처리도 하지 않았다. 주의 쉬운 문제지만 많이 틀렸다. 그 이유는 범위 문제 처음 문제를 잘못 이해해서 1,000,000이하의 수가 들어온다는 줄 알았다. 하지만 1,000,000자리이므로…. 숫자로 받으면 안된다. 범위를 훨씬 넘기기 때문 output역시 long을 넘어간다. 따라서 문자열로 처리해야한다. 시간 문제 위의 문제를 파악하고 간단히 String으로 처리했지..
2018.08.21 -
[유클리드 호제법] / [백준(baekjoon) 9613] GCD(최대공약수) 합
문제 백준 9613 최대공약수(GCD) 의 합을 구하시오. 원리 유클리드 호제법, GCM, LCD 설명 포스트 참고! 구현 java 1.import java.util.*; 2. 3.public class Main { 4. public static void main(String[] args) { 5. Scanner sc = new Scanner(System.in); 6. int t = sc.nextInt(); 7. for (int k = 0; k < t; k++) { 8. int n = sc.nextInt(); 9. int[] inputs = new int[n]; 10. for (int i = 0; i < n; i++) inputs[i] = sc.nextInt(); 11. 12. long sum = 0; ..
2018.08.20