SlideShare ist ein Scribd-Unternehmen logo
1 von 10
아꿈사 http://café.naver.com/architect1
      문현진 arnold.spring@gmail.com
문제 설명
   6
   and
   dick
   jane
   puff
   spot
   yertle
 bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn


 dick and jane and puff and spot and yertle
• 암호를 복호화 할 수 있는 테이블을 만들어야 한다.
• 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
  수밖에 없다.
• 그렇지만 암호화 + 복호화 모두 가능해야 하므로
  테이블에서 하나의 알파벳은 하나의 알파벳으로만
  대응가능한 사전 형태로 만들수 있다.
• 암호를 복호화 할 수 있는 테이블을 만들어야 한다

• >> mappingDict = dict()
정상 조건을 검사하는 방법은
                  매핑 테이블에 대입 했을때
                   암호 한 글자에 복호화된
                 글자 하나가 매핑 가능 하면
                         된다.


• 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
  수밖에 없다.

   bjvg = dick   hxsn = jane   qymm = puff

   bjvg = jane   hxsn = puff   qymm = spot

                 hxsn = spot   qymm = yertle
• 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는
  수밖에 없다는것을 깨달음

   hxsn = jane   qymm = puff                End!
   hxsn = puff   qymm = spot

   hxsn = spot   qymm = yertle

                                 모든 암호를 제대로 복호화 할 수
                                     있으면 올바른 매핑
                                 테이블이라고 할 수 있음. 따라서
                                  종료 조건에 도달 했을 때의
                                      테이블이 정답.
• 암호화 + 복호화 모두 가능해야 하므로 테이블에서 하나의
  알파벳은 하나의 알파벳으로만 대응가능한 사전 형태로
  만들수 있다.
def main():
  strresult = "*"
  retval = None

  edword = ed.pop()
  retval = decode(edword)

  if retval == False:
      print strresult
  else:
      for edword in ed_:
         print decodewords(mapping,edword)
main()
def decode(edword):
    if len(ed) == 0:
       wordmapping(mapping, rd[0], edword)
       print 'touch end -- ed is empty'
       print mapping
       return True
   for rdword in rd:
       if wordmapping(mapping, rdword, edword) == True:
          rd.remove(rdword)
          newedword = ed.pop()
          result = decode(newedword)
          if result == False:
              ed.append(newedword)
              rd.append(rdword)
          else:
              return True
return False
Code is on wiki.

Weitere ähnliche Inhalte

Mehr von Hyun Jin Moon

Swift 0x19 advanced operators
Swift 0x19 advanced operatorsSwift 0x19 advanced operators
Swift 0x19 advanced operatorsHyun Jin Moon
 
Swift 0x18 access control
Swift 0x18 access controlSwift 0x18 access control
Swift 0x18 access controlHyun Jin Moon
 
Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested typesHyun Jin Moon
 
Swift 0x12 optional chaining
Swift 0x12 optional chainingSwift 0x12 optional chaining
Swift 0x12 optional chainingHyun Jin Moon
 
Swift 0x0e 초기화
Swift 0x0e 초기화Swift 0x0e 초기화
Swift 0x0e 초기화Hyun Jin Moon
 
Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Hyun Jin Moon
 
Swift 0x02 기본 연산자
Swift 0x02   기본 연산자Swift 0x02   기본 연산자
Swift 0x02 기본 연산자Hyun Jin Moon
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정Hyun Jin Moon
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sortHyun Jin Moon
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service PublishHyun Jin Moon
 

Mehr von Hyun Jin Moon (14)

Swift 0x19 advanced operators
Swift 0x19 advanced operatorsSwift 0x19 advanced operators
Swift 0x19 advanced operators
 
Swift 0x18 access control
Swift 0x18 access controlSwift 0x18 access control
Swift 0x18 access control
 
Swift 0x17 generics
Swift 0x17 genericsSwift 0x17 generics
Swift 0x17 generics
 
Swift 0x14 nested types
Swift 0x14 nested typesSwift 0x14 nested types
Swift 0x14 nested types
 
Swift 0x12 optional chaining
Swift 0x12 optional chainingSwift 0x12 optional chaining
Swift 0x12 optional chaining
 
Swift 0x0e 초기화
Swift 0x0e 초기화Swift 0x0e 초기화
Swift 0x0e 초기화
 
Swift 0x0d 상속
Swift 0x0d 상속Swift 0x0d 상속
Swift 0x0d 상속
 
Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트Swift 0x0c 서브스크립트
Swift 0x0c 서브스크립트
 
Swift 0x02 기본 연산자
Swift 0x02   기본 연산자Swift 0x02   기본 연산자
Swift 0x02 기본 연산자
 
Swift 0x01 환경 설정
Swift 0x01   환경 설정Swift 0x01   환경 설정
Swift 0x01 환경 설정
 
Quick, Tree sort
Quick, Tree sortQuick, Tree sort
Quick, Tree sort
 
Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sort
 
Djang Beginning 2
Djang Beginning 2Djang Beginning 2
Djang Beginning 2
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service Publish
 

Programming challange crypt_kicker

  • 1. 아꿈사 http://café.naver.com/architect1 문현진 arnold.spring@gmail.com
  • 2. 문제 설명  6  and  dick  jane  puff  spot  yertle  bjvg xsb hxsn xsb qymm xsb rqat xsb pnetfn  dick and jane and puff and spot and yertle
  • 3. • 암호를 복호화 할 수 있는 테이블을 만들어야 한다. • 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는 수밖에 없다. • 그렇지만 암호화 + 복호화 모두 가능해야 하므로 테이블에서 하나의 알파벳은 하나의 알파벳으로만 대응가능한 사전 형태로 만들수 있다.
  • 4. • 암호를 복호화 할 수 있는 테이블을 만들어야 한다 • >> mappingDict = dict()
  • 5. 정상 조건을 검사하는 방법은 매핑 테이블에 대입 했을때 암호 한 글자에 복호화된 글자 하나가 매핑 가능 하면 된다. • 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는 수밖에 없다. bjvg = dick hxsn = jane qymm = puff bjvg = jane hxsn = puff qymm = spot hxsn = spot qymm = yertle
  • 6. • 주어진 데이터가 하나도 없으므로, 하나씩 넣어보는 수밖에 없다는것을 깨달음 hxsn = jane qymm = puff End! hxsn = puff qymm = spot hxsn = spot qymm = yertle 모든 암호를 제대로 복호화 할 수 있으면 올바른 매핑 테이블이라고 할 수 있음. 따라서 종료 조건에 도달 했을 때의 테이블이 정답.
  • 7. • 암호화 + 복호화 모두 가능해야 하므로 테이블에서 하나의 알파벳은 하나의 알파벳으로만 대응가능한 사전 형태로 만들수 있다.
  • 8. def main(): strresult = "*" retval = None edword = ed.pop() retval = decode(edword) if retval == False: print strresult else: for edword in ed_: print decodewords(mapping,edword) main()
  • 9. def decode(edword): if len(ed) == 0: wordmapping(mapping, rd[0], edword) print 'touch end -- ed is empty' print mapping return True for rdword in rd: if wordmapping(mapping, rdword, edword) == True: rd.remove(rdword) newedword = ed.pop() result = decode(newedword) if result == False: ed.append(newedword) rd.append(rdword) else: return True return False
  • 10. Code is on wiki.