728x90
문제
We * love = CodelQ
W = 7 e =4 l =3 o = 8 v =0 C =2 d =1 l =9 Q =6
74*3804=281496
다음 식을 만족하는 숫자 대입 방법은 몇 가지 있는지 구해 보세요. (단 최상위 문자에 0은 들어가지 않고 다른 문자에는 다른 숫자가 대입됩니다)
READ + WRITE + TALK = SKILL
난이도
IQ 80
목표시간
20분
풀이(c#,VS)
1.
-
문제정답(사용언어:python)
1.
r | e | a | d | |
w | r | i | t | e |
t | a | l | k | |
s | k | i | l | l |
w+1=s or w+2=s | e+a=8 or e+a=9 or e+a=10 | a+t=8 or a+t=9 or a+t=10 |
(d+e+k)%10 = l ((a+t+l)*10+d+e+k)%100 = l*11 |
#풀이1
from itertools import permutations
count =0;
for (r,e,a,d,w,i,t,l,k,s) in permutations(range(10)):
if r==0 or w==0 or t==0 or s==0:
continue
read = r*1000 + e*100 + a*10 +d
write = w*10000 + r*1000 +i*100 + t*10 + e
talk = t*1000 + a*100 + l*10 + k
skill = s*10000 + k*1000 +i*100 + l*10 + l
if read+write+talk==skill:
count +=1
print(count)
#풀이2 디버깅이 안된다.. 예제 소스(책 소스랑 좀 다르다) 찾아서 받아서 돌려봤는대도 안된다..
import re
from itertools import permutations
from collections import OrderedDict
count =0
for(e,a,d,t,k,l) in permutations(range(0,10),6):
if ((a+t==8) or (a+t==9) or (a+t==10)) and\
((a+e==8) or (a+e==9) or (a+e==10)) and\
((d+e+k)%10==1) and\
(((a+t+l)*10+d+e+k)%100==l*11):
temp = [item for item in range(0,10) if item not in [k,e,d,l,t,a]]
for(i,r,s,w) in permutations(temp,4):
if((r!=0) and (w!=0) and (t!=0)) and\
((s==w+1)or(s==w+2)):
read = r*1000 + e*100 + a*10 +d
write = w*10000 + r*1000 +i*100 + t*10 + e
talk = t*1000 + a*100 + l*10 + k
skill = s*10000 + k*1000 +i*100 + l*10 + l
print("{}+{}+{}={}".format(read,write,talk,skill))
if read+write+talk==skill:
print("d{}+{}+{}={}".format(read,write,talk,skill))
count +=1
print(count)
책 제목 그대로... 코딩 퍼즐? 같은 느낌이다.. 쓰기 위한 코드? 알고리즘이라기 보단 다양한 방법으로 끼워 맞추는 놀이같은 문제다.. ㅜㅜ...
728x90
'Algorithm > Solving' 카테고리의 다른 글
DP,DynamicProgramming,Triangle_path (0) | 2021.08.22 |
---|---|
DP,DynamicProgramming,LongestIncreasingSequence (0) | 2021.08.22 |
[책-알고리즘퍼즐68]12.제곱근의 숫자 (0) | 2020.02.06 |
[책-알고리즘퍼즐68]11.피보나치 (0) | 2020.02.06 |
[책-알고리즘퍼즐68]9.남녀 불균형 (0) | 2020.02.04 |