def check_cycle(d):
remain_list = []
dividend = 1 # 피제수
n = 0 # 현재 피제수의 인덱스
while True:
remain = dividend % d # 나머지
if remain in remain_list:
return n - remain_list.index(remain)
else:
remain_list.append(remain)
dividend = remain * 10
n += 1
max_d = d = 2
max_n = 0
while d < 1000:
temp = check_cycle(d)
if temp > max_n:
max_n = temp
max_d = d
d += 1
print(max_d)
===========================================================================
C 언어가 아니군요.
언뜻 보고 루비 인줄 알았으나 문법이 이상해서
다시 보니 또 루비가 아니라 파이썬이군요.
위소스 그대로 변경없이 순차적으로 자바로 변경했기 때문에, 클래스 구조 자체는 좀 보기 않좋은데요
그러나 재사용 되는 것 같지 않기 때문에 생성자를 통해 초기화 하는 등 그런 작업은 하지 않고
메소드 안에서 모두 지역변수로 생성했고요.
( 위 소스에서도 다 지역변수로 생성되었기 때문에 , 그냥 자바로 변경하다 보니 그렇게 되었네요)
위 메소드 , 그러니까 check_cycle(d): 가
포함된 클래스는 TestUtil 라고 하고 그걸 실행시키는 클래스는 TestExam 라고 임의로
정했습니다.
* 1개의 파일에 아래 2개의 클래스 소스를 같다 붙여서 그냥 실행시키며 됩니다.
* 클래스를 각각의 파일에 나누려고 하시면 각각의 클래스 정의부에 public 선언을 추가해주시고,
main 메소드가 있는 클래스에서 TestUtil 클래스를 import 해주시면 됩니다.
// 아래의 클래스는 위 소스상에서 메소드(def check_cycle(d):)가 있는 클래스입니다.
import java.util.ArrayList;
class TestUtil {
public int check_cycle(int d){
ArrayList<Integer> remain_list = new ArrayList<Integer>();
int dividend = 1;
int n = 0;
while (true){
int remain = dividend % d;
if (remain_list.contains(remain)){
return n - remain_list.indexOf(remain);
}
else{
remain_list.add(remain);
dividend = remain * 10;
n += 1;
}
}
}
}
// 아래의 클래스는 위 클래스를 실행시키는 main 메소드가 있는 클래스입니다.
class TestExam {
public static void main(String[] args) {
TestUtil cal = new TestUtil(); // 위 클래스의 객체를 생성
int max_d = 2;
int d = 2;
int max_n = 0;
while (d<1000){
int temp = cal.check_cycle(d);
if (temp > max_n){
max_n = temp;
max_d = d;
}
d += 1;
}
System.out.println(max_d);
}
}
파이썬은 아주 예전에 잠깐 본게 다라서, 탭 구분하는게 눈에 잘 들어오지 않는 군요.
이상 도움이 되셨기를..
'업무일지' 카테고리의 다른 글
toad dmp import (0) | 2011.04.12 |
---|---|
Toad Tip (0) | 2011.04.06 |
아시아나 에러 해결 (0) | 2011.03.25 |
daum2 (0) | 2011.03.15 |