daniel7481의 개발일지

[프로그래머스]오픈채팅방 본문

프로그래머스

[프로그래머스]오픈채팅방

daniel7481 2022. 7. 15. 17:33
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

BOJ랑 프로그래머스를 골고루 풀고 있다.(사실 프로그래머스 문제가 더 재밌다). 시험에는 어떤 유형이 나올지 모르기 때문에 다양한 문제를 풀고 있다. 이 문제는 단순한 문자열 문제였는데, 이름이 바뀔 수 있다는 점과 중복이 허용된다는 점에서 변별력이 었었던 것 같다. 파이썬의 경우에는 이런 경우에 아주 좋은 자료구조가 있다. 바로 딕셔너리이다. 들어온 userId를 키로 가지고, 닉네임을 value로 갖는 딕셔너리를 선언한 후, 만약 바꾸면 단순히 해싱해서 바꿔주면 된다. 이제 중간 과정을 담는 process 리스트에 들어온 것과, 나간 기록을 userId와 남긴 후 answer에 순차적으로 담아주면 된다.

def solution(record):
    answer = []
    user = dict()
    process = []
    for r in record:
        r = r.split()
        if r[0] == 'Enter':
            user[r[1]] = r[2]
            process.append([r[1], 'Enter'])
        elif r[0] == 'Change':
            user[r[1]] = r[2]
        else:
            process.append([r[1], 'Leave'])
    for p in process:
        if p[1] == "Enter":
            answer.append('{0}님이 들어왔습니다.'.format(user[p[0]]))
        else:
            answer.append('{0}님이 나갔습니다.'.format(user[p[0]]))
    return answer
반응형