본문 바로가기

코딩연습

(3)
팩토리얼이 어떤 수로 나누어 떨어지는지 확인하기 어떤 정수 f의 팩토리얼이 다른 정수 n 으로 나누어 떨어지는지 확인하기. 1 x 2 x .. x f / n 를 손으로 계산할 때, 팩토리얼부터 구하지 않을 것. 분명 분모와 2를 약분하고, 분모와 3을 약분하고 ... 를 반복하는 방식으로 풀 것이다. 이 과정을 코드로 옮겨 봄. from functools import lru_cache @lru_cache(None) def gcd_r(b, s): if b < s: b, s = s, b b, s = s, b%s if s == 0: return b return gcd_r(b, s) def gcd(b, s): if b < s: b, s = s, b while True: b, s = s, b%s if s == 0: break return b def fac_di..
[JAVA] 원탁에서 n 칸씩 건너 빼와서 만들어진 수열 다음 지식에서 재미있어 보이는 문제가 있어서 한번 짜 봤다. 문제는 다음과 같다. 2010년 4월 1일 추가 : 여기에 좀 더 재미있는 분석과 코드가 있다. Josephus Problem 이란 이름이 붙은 것 같다. http://k.daum.net/qna/view.html?qid=44T6T 친구가 질문했는데 너무 어려워서 지인들의 설명을 듣고자 질문합니다. 1부터 30까지의 수를 가진 사람이 순서대로 원 주위로 앉아있을 때, 먼저, 9번째 앉아있는 사람을 쫓아내고, 그로부터 9칸을 더 간 18번째 사람을 쫓아낸다. 마찬가지로 9칸을 더 간 27번 사람을 쫓아내고, 그 다음, 또 9칸을 더 간 사람(6번)을 쫓아낸다. 그리 고 나서 9칸을 갈 때에는 9번째 앉았던 쫓겨난 사람은 없는 것으로 치고 9칸 뒤,..
[JAVA|UVa] 108 Maximum Sum 자바 연습이 좀 필요해서, UVa 문제를 좀 풀어보려 한다. 처음 문제를 풀었다. 문제를 제출할 때 main 메소드가 들어있는 클래스의 이름은 Main 이어야 하는 것 같다. 이것 때문에 여러 차례 빠꾸 맞음. 우선 코드. import java.util.Scanner; public class Main { private static int N; private static int[][] a = null; private static int x_s , x_e; public static void main(String arg[]) { getData1(); System.out.println(findMaxSum1()); } private static void getData1() { Scanner scnr = new S..