본문 바로가기
728x90

전체 글131

[백준][JAVA] 1110번 더하기 사이클 이번 코드의 중점은 알고리즘보다 JAVA의 기본 메소드 사용에 익숙해지는 데에 있다. 때문에 모든 언어에서 사용할 수 있는 알고리즘으로 구현한 코드와 JAVA 메소드를 사용한 코드 두가지를 보여주고자 한다. 모든 언어에서 사용할 수 있는 방법은 수학적으로 10의 자리와 1의 자리는 각 num / 10과 num % 10 이다. 즉, 숫자를 10으로 나눴을 때의 몫과 나머지로 나타낼 수 있다. 전체 성공 코드 1. JAVA 메소드를 사용한 방법 import java.util.Scanner; public class Main { public static int sumValue(int N) { String num = String.valueOf(N); int sum_digit = 0; for (int i = 0; .. 2019. 10. 7.
[백준][JAVA] 1463번 1로 만들기 다이나믹 함수 개념을 설명하기에 가장 대표적인 문제라고 할 수 있을 것 같다. N에 괸한 최소값을 구하기 위해서 그 밑의 값들을 참조하는 형식이다. 이는 재귀함수의 원리와 같다고 볼 수 있지만, 재귀함수의 경우 함수 콜(call)을 계속해야하므로 시간이나 메모리에서 사용의 한계점이 존재한다. 이에 반해, 다이나믹 프로그래밍은 값을 구해 어레이 등에 저장함으로써 해당 값을 알 수 있게된다. 다이나믹 프로그래밍 개념의 경우 소스가 많이 존재함으로 각설하고, 알고리즘에 대해서 설명하겠다. 코드는 재귀함수와 다이나믹프로그래밍을 이용하여 구한 두가지를 모두 구현해보았지만, 재귀함수의 경우 백준에 제출하였을 때 시간초과가 뜬다. N에 관한 연산 최소값을 구하기 위해 최대 세 종류의 값을 참조해야한다. 3으로 나눈 .. 2019. 10. 6.
[백준][JAVA] 10798번 세로읽기 문제가 길게 나와있을 뿐, 중점은 5줄이 주어졌을 때 세로로 읽어서 결과를 출력하면 된다. 고려해야할 점은 길이가 짧은 문장에 대해서 어떻게 할 것인가이며, 예외처리 없이 무조건 세로로 읽어드리게되면 메모리 접근 오류로 에러가 뜬다. 나같은 경우에는 해당 문장의 길이가 충분한 경우에만 result에 값을 집어 넣도록 하였고, flag라는 변수를 두어 해당 index에 값이 있는 경우에만 flag를 1로 만들게 하였다. 즉, 5개의 입력 string이 모두 해당 index의 값이 없을 경우, 모두 읽어드린 것이므로 반복문을 종료하고 결과를 출력한다. 전체코드 import java.util.Scanner; public class Main { public static void main(String[] args.. 2019. 10. 1.
[백준][JAVA] 2960번 에라토스테네스의 체 주어진 알고리즘을 구현하는 것이 목표이며, 이번엔 arrayList 함수를 사용하는 것과 사용하지 않는 것으로 두가지 방법 모두로 코드를 작성하려한다. 방법1. arrayList함수를 사용하지 않고 구현 이미 알고리즘은 주어져있으므로 크게 생각할 부분은 없지만 array를 생성할때 2~N까지의 수를 집어넣는 것이므로 index에 주의해주어야한다. 1) N의 크기의 array를 생성해 0과 1번째는 사용하지 않는 방법과 2) N-2크기의 array를 생성하되 array에 저장하는 값을 2~N으로하는 방법도 존재하지만, 나는 boolean array를 이용하여 코드를 작성하였다. boolean은 int에 비해 현저하게 작은 메모리를 사용한다는 데에 장점이 있지만, index를 하는 데에 헷갈린다는 단점이 있.. 2019. 9. 30.
[백준][JAVA] 4948번 베르트랑 공준 문제 설명은 베르트랑 공준에 대해서 설명하고 있지만, 실제로는 중요한 부분이 아니고 자연수 n이 주어졌을 때, n보다 크고 2n보다 작거나 같은 수들 중 소수들의 개수를 구하는 코드를 짜는 것이 목표. 소수를 구하는 데 효율적인 방법은 해당 숫자를 나눌 수 있는 숫자가 있는 지 모든 숫자에 대해서 확인하는 것이 아니라, 소수에 대해서만 적용하면 되지만 코드가 복잡해지므로, 단순히 isPrime() 함수는 num이 주어졌을 때 num의 제곱근보다 작거나 같은 수 사이에서 나눠지는 지 확인. for (int i = init; i 2019. 9. 29.
728x90