파이썬/알고리즘
(파이썬)백준 알고리즘 1065번 한수
오지고지리고알파고포켓몬고
2016. 12. 19. 21:39
백준 알고리즘 저지 1065번 문제 (https://www.acmicpc.net/problem/1065)
한수를 구하는 문제.
1~99까지는 원소의 개수가 2개 이하이므로 모두 한수에 속함.
그 이후는 111, 123 ... 등의 숫자가 등차 수열을 이룸
사실 더 좋은 방법이 있겠지만 1000보다 작은수(~999까지) 이므로 세자리 수 일때에 관한 함수를 만듬.
h - hundred, t - ten, o - one = 100의 자리, 10의 자리, 1의 자리를 뜻함(비루한 영어 실력에 눈물ㅜㅜ)
def ct(i): count=0 for input in range(1,i+1): if(input<100):count+=1 elif(input<1000):count+=func100(input) else:pass return count def func100(num): h,t,o=str(num)[0],str(num)[1],str(num)[2] h,t,o=int(h),int(t),int(o) if h-t==t-o: return 1 else: return 0 n=int(input()) print(ct(n))
길을 헤메일 누군가를 위해 코드를 공유하지만 이 글을 보고 있다면 문제 해결방법을 충분히 고민한 뒤에 찾아보는 것이길 바람
(추가적으로 알고리즘은 현답은 있지만 정답이 없는 문제라고 생각함.. 더 나은 풀이법이 있다면 다같이 공유할 수 있었으면 좋겠음!)