[XHAENEUNG] python 질문드립니다.

  • jdw0271
    jdw0271

    XHAENEUNG

    파이썬 자료구조인 dict와 list, 문자열 인덱싱과 sort를 사용하여
    간단하게 풀어보았습니다.
    어느 부분에서 오답처리 되고 있는지 궁금하여 질문 드립니다.

    n = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
    num = dict()
    t = 0
    for r in n:
        num[r] = t
        t += 1
    
    a = int(input())
    for i in range(a):
        b = input()
        c = b.split(' ')
    
        for j in range(3):
            if c[j] in num.keys():
                c[j] = num[c[j]]
    
        if c[1] == '+':
            res = c[0] + c[2]
        elif c[1] == '-':
            res = c[0] - c[2]
        elif c[1] == '*':
            res = c[0] * c[2]
    
        d = list(c[4])
        for s in n:
            if num[s] == res:
                e = list(s)
    
        d.sort()
        e.sort()
    
        if d == e: print('Yes')
        else: print('No')
    

    7년 전
1개의 댓글이 있습니다.
  • seico75
    seico75

    일단 답이 그러니까 res 가 0보다 작거나 10보다 큰경우 오답처리하는 부분이 없어서 오답처리가 되는 것 같습니다.
    e값이 셋팅이 안되서 error나거나 이전값을 써서 오답이 될 것 같습니다.

    그리고

        for s in n:
            if num[s] == res:
                e = list(s)
    

    이 부분은 아래와 같이 하면 어떨까요?

    e = list( n[res])
    

    아래의

        for j in range(3):
            if c[j] in num.keys():
                c[j] = num[c[j]]
    

    부분도 비효율적인것 같고 (1은 항상 실패고 0, 2만 처리하면 되는데..)

    c[0] = n.index[c[0]]
    c[2] = n.index[c[2]]
    

    로 하며 어떨까요?


    7년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.