강의로 돌아가기
ryuncha

시간 초과 문제

복잡도 문제인가요?

작성중인 코드―solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def mySlice(string):
    first = string.find(" ")
    second = string.find(" ", first+1)

    action = string[0:first]
    if action == "Leave":
        uid = string[first+1:]
        name = None
    else: 
        uid = string[first+1:second]
        name = string[second+1:]

    return action, uid, name

def myTextMaker(dbMessage, dbUser):
    ans = [""] * dbMessage['count']
    cnt = 0
    for idx in range(len(dbMessage['action'])):
        if dbMessage['action'][idx] == 'Enter':
            nameidx = dbUser['uid'].index(dbMessage['uid'][idx]) 
            ans[cnt] = dbUser['name'][nameidx] + "님이 들어왔습니다."
            cnt+=1
        elif dbMessage['action'][idx] == 'Leave':
            nameidx = dbUser['uid'].index(dbMessage['uid'][idx]) 
            ans[cnt] = dbUser['name'][nameidx] + "님이 나갔습니다."
            cnt+=1
    return ans

def solution(record):
    dbMessage = {
        'count' : 0,
        'action' : list(),
        'uid' : list()
    }
    dbUser = {
        'uid' : list(),
        'name' : list()
    }

    for r in record:
        action, uid, name = mySlice(r)

        dbMessage['action'].append(action)
        dbMessage['uid'].append(uid)

        if action == 'Enter':
            dbMessage['count'] += 1
            if not uid in dbUser['uid']:
                dbUser['uid'].append(uid)
                dbUser['name'].append(name)
            if uid in dbUser['uid'] and dbUser['name'][dbUser['uid'].index(uid)] is not name:
                dbUser['name'][dbUser['uid'].index(uid)] = name

        elif action == 'Change':
            dbUser['name'][dbUser['uid'].index(uid)] = name

        else:
            dbMessage['count'] += 1

    return myTextMaker(dbMessage, dbUser)
1 개의 답변
Demi

이 문제의 모든 테스트케이스는 시간 제한이 10초로 아주 넉넉히 설정되어있습니다.
코드의 시간복잡도가 너무 높은게 아닌지, 아니면 무한반복에 걸리는 상황이 있는게 아닌지 확인을 해보세요 :)

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.