접근법 문제에서 주어진 가장 기본적인 규칙이 짝수라는 것이다. 이 특정한 짝수를 두 수의 합의 형태로 나타낼 때, 가장 차이가 작은 것은 짝수를 2로 나눈 값을 나열하는 것이다. 예를 들어서, 10의 경우는 5 + 5가 될 것이고, 14의 경우는 7 + 7이 될 것이다. 따라서, 문제에서 원하는 답을 찾을 때는, 어찌 되었든 가장 중앙에서부터 시작해야 한다. 문제를 풀기 위해서 접근한 방법은 아래와 같다. 최대값인 10,000까지의 소수로 이루어진 리스트를 우선 만들어 놓는다. 입력값을 n 이라고 할 때, n의 가운데에서부터 시작해서 소수 리스트에 해당 값이 있는지 확인한다. 없으면 다음 값, 또 그다음 값... 을 반복하여 중앙에서 가장 가까운 소수를 찾는다. (이하 x) 이제 해당 소수와 가장 인접한..
View Eclipse를 설치하고 나면 여러 가지 View를 가장 먼저 만나 볼 수 있다. Eclipse에서는 여타 IDE들과 마찬가지로 가변적으로 View를 조정할 수 있으며 자유도가 높아 생산성을 높일 수 있다. 몇 가지 View의 역할을 한번 살펴보자. Package Explorer : 패키지를 관리합니다. Outline : 제작한 Source Code를 시각적으로 표현해 일목요연하게 볼 수 있습니다. Problems : Source Code의 문제들을 알려줍니다. Console : 제작한 Source Code가 실행되면 나오는 결과를 출력해줍니다. Perspective 에서 Debug view로의 전환이 가능한데, Debug 작업을 할 때 필요한 요소들을 모아둔 view (우측 상단에서 Persp..
접근법 소수 시리즈 4탄이다. 어벤저스도 4편이 엔드게임인데 소수도 이제 엔드게임이었으면 좋겠다. 이번 문제도 에라토스테네스의 체를 이용하면 쉽게 풀 수 있다. 에라토스테네스의 체에 대한 자세한 설명은 이전 포스팅에 있으니 참고바란다. (이전 포스팅) 우선 숫자 0이 들어올 때까지 해당 프로그램은 무한루프를 돌아야 한다. 그리고 각 케이스 별로 입력값이 주어지면 입력값의 두배에 해당하는 범위까지의 소수의 개수를 찾아야한다. 따라서, 이전에 만들어 두었던 프로그램을 활용하면 손쉽게 문제를 풀 수 있다. 풀이 while True: n = int(input()) N = 2 * n if n == 0 : break else : arr = [i for i in range(N+1)] arr[1] = 0 for i i..
접근법 소수 시리즈의 3탄이다. 소수가 싫어진다 소수 2탄과 유사한 문제의 형태이다. 범위가 주어지고, 해당 범위 안에서 소수를 찾는 문제다. 이번에는 전에 사용했던 함수들의 문제점을 조금 해결해보았다. 우선, for문의 반복 범위를 제곱근까지만 돌 수 있도록 변경했다. 반복의 횟수를 줄이는 것만으로 해도 충분히 시간을 줄일 수 있었고, 추가적으로 중간에 나누어 떨어지는 수가 있는 경우에는 즉시 False를 return하도록 했다. 그 코드는 바로 다음과 같다. import math def Prime(num): if num==1: return False n=int(math.sqrt(num)) for i in range(2,n+1): if num%i==0: return False return True M,..