== 첫 번째 방법 == {{{ def ugly(pos): count = 0 uglys = [2,3,5] minVal = 0 while count != pos-1: minVal = min(uglys) if uglys.count(minVal*2)==0: uglys.append(minVal*2) if uglys.count(minVal*3)==0: uglys.append(minVal*3) if uglys.count(minVal*5)==0: uglys.append(minVal*5) uglys.remove(minVal) count += 1 print minVal if __name__=='__main__': ugly(1550) }}} == ë‘ ë²ˆì§¸ 방법 == 로그를 ì´ìš©. 로그를 ì´ìš©í•˜ë©´ ê³±ì…ˆì„ ë§ì…ˆìœ¼ë¡œ, 지수를 곱셈으로 치환가능. 예를 들어, 2, 3, 5ëŒ€ì‹ , log2, log3, log5를 ì‚¬ìš©í•œë‹¤ê³ í–ˆì„ ë•Œ, {{{ log2 = 0.3010 log3 = 0.4771 log5 = 0.6987 2 = log2 3 = log3 5 = log5 2*2 = 2^2 = (log2)^2 = 2*log2 2*3 = log(2*3) = log2 + log3 2*2*3 = log(2*2*3) = log2 + log2 + log3 }}} ê°€ ë˜ê³ 2^x*3^y*5^z 는 xlog2+ylog3+zlog5로 í‘œí˜„í• ìˆ˜ 있다. log2, log3, log5는 ìƒìˆ˜ì´ë¯€ë¡œ. ì´ëŠ” 3ì°¨ì› ê³µê°„ìƒì—ì„œì˜ ì§ì„ ì´ ë˜ëŠ”ë°, ì´ë¥¼ f(x,y,z)ë¼ê³ 하면, ì •ìˆ˜ x,y,zì— ëŒ€í•´ 1500번째 ìœ„ì¹˜ì— ìžˆëŠ” ì ì„ êµ¬í•˜ê³ ì´ë•Œì˜ x,y,z를 ê°ê° 2,3,5ì— ì§€ìˆ˜ì—°ì‚°ì„ í•´ ë‹µì„ êµ¬í•œë‹¤. 허나.. ë”ì´ìƒì˜ ìƒê°ì „개를 í• ìˆ˜ 없다. -_- ---- UglyNumbers