반응형

java 94

백준알고리즘 #1934 최소공배수 Java

주어진 a와 b값의 최소공배수를 구하는 문제이다. 최소공배수는 a와 b의 공배수 중 가장 작은 수이므로 단순히 두 수중 큰 수부터 시작하여 하나씩 비교하는 방식으로 쉽게 구할 수 있다. 위와 같이 먼저 a와 b의 값을 비교하여 큰 수를 b쪽에 두고, while문을 이용하여 b값을 시작값으로 두고 1씩 증가시키면서 조건(공배수)을 만족시키는 값을 찾을 수 있다. 다만 이렇게 구하게 되면 시간이 굉장히 오래걸리기 때문에 위와 같은 코드로 제출하게 되면 시간 초과라는 오류가 발생하게 된다. 따라서 조금 다른 방식으로 구해보았다. 최소공배수는 두 수의 곱 / 최대공약수 로 구할 수 있기 때문에 먼저 최대공약수를 구한다. 최대공약수는 1부터 두 수중 작은 수까지로 한정되어 있기 때문에 비교적 짧은 시간에 값을 구..

백준알고리즘 #2609 최대공약수와 최소공배수 Java

먼저 두 수를 비교하여 큰수와 작은수를 나눈다. 나눈 이유는 for문에서 작은수 까지만 반복하면 되기 때문에 일부러 큰수와 작은수를 정하는 구문을 넣었다. for문에서는 최대공약수를 찾기 위해 1부터 두 수중 작은 수까지 반복하면서 큰수를 i로 나누었을때, 그리고 작은 수를 i로 나누었을 때 모두 나머지가 0이 되는 수(공약수)를 찾아 gcd변수에 넣는다. for문을 빠져나왔을 때 gcd의 값은 공약수 중 가장 큰 최대공약수가 된다. 두번째 while문에서는 최소공배수를 구한다. 먼저 차례로 증가할 수 j를 만든 후 lcm(최소공배수)가 0인 동안 반복하도록 한다. 위와 마찬가지로 이번에는 j를 큰 수로 나누었을때, j를 작은 수로 나누었을 때 나머지가 모두 0이 되는 j값을 찾는다. 가장 작은 j값을 ..

백준알고리즘 #15596 정수 N개의 합 Java

주어진 조건에 맞게 N개의 정수의 합을 Test 클래스로 sum()메소드를 이용해 정수의 합을 리턴하면 된다. 배열에 들어있는 수들의 합은 for문을 이용하면 쉽게 구할 수 있다. 주어진 조건대로 Test클래스에 sum이라는 함수를 만들었다. 나는 sum 변수를 생성하여 sum에 합을 담은 후 리턴했지만 답을 제출할 때에는 ans라는 변수가 주어지므로 조건에 맞게 변형시키면 되겠다. 밑의 main메소드는 올바르게 실행하는지 확인하기 위해 작성해본 코드이므로 백준알고리즘 정답을 확인할 때에는 제외하고 위의 Test 클래스만 제출하면 된다.

백준알고리즘 #1929 소수 구하기 java (에라토스테네스의 체)

보기에 간단해 보이는 문제이다. sosu()메소드를 만들어서 m부터 n까지의 소수를 차례대로 구하는 코드를 작성했으나 시간 초과로 실패 이러한 시간 초과 문제를 해결하기 위해서는 에라토스테네스의 체를 이용하면 된다. '에라토스테네스의 체' 란 그리스의 수학자이자 지리학자인 에라토스테네스가 고안한 소수(素數)를 찾는 방법으로, 이 방법으로 소수를 찾으려면, 2부터 시작해 자연수를 차례로 쓴 다음, 2 이외의 2의 배수, 3 이외의 3의 배수, 5 이외의 5의 배수의 순서로 수를 지워나간다. 차례대로 지워나갔을 때 남아있는 수는 소수가 된다. 즉 배열을 생성한 후 에라토스테네스의 체를 이용하여 2의배수, 3의배수,... 를 차례대로 걸러내고 남는것을 출력하면 되겠다. n+1개의 배열을 만들고 2의 배수부터 ..

반응형