국문과 유목민

(Week2)[구현] 오픈채팅방 본문

알고리즘_코딩테스트/주간코딩 스터디 (주코스)

(Week2)[구현] 오픈채팅방

논곰 2022. 6. 20. 15:23

 

주간 코딩스터디 때 푼 문제들을 정리하고 있습니다. 구체적인 문제에 대한 정보는 게시글 내 링크를 살펴봐주세요

소요시간: 20 분

1. 문제 설명

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

 

프로그래머스

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

programmers.co.kr

2. 접근 방식

  • 이 문제의 쟁점은 순간마다 로그를 찍을 필요가 없고, "최종"으로 찍히는 결과값만 보면 된다는 것이라고 생각
  • 아이디에 따른 닉네임의 변화를 마지막에서만 확인하면 된다.
  • 기록 로그는 오히려 더 쉽게 Change부분만 제외시켜서 찍고자 했다. 

3. 코드

def solution(record):
    user_nick, record_id = {}, []
    answer = []
#  record 분할 
    for splits in record:
        split_ls = splits.split()
        print(split_ls)
        if len(split_ls) == 3:
            user_nick[split_ls[1]] = split_ls[2]
        record_id.append((split_ls[0],split_ls[1]))

#  record에 따라 출력
    for action, user_id in record_id:
        if action =="Enter":
            answer.append(f"{user_nick[user_id]}님이 들어왔습니다.")
        elif action =="Leave":
            answer.append(f"{user_nick[user_id]}님이 나갔습니다.")
        else:
            continue
    return answer

4. 코멘트

  • 예전같으면, fstring이나 split 등에 익숙하지 않아서 꽤 헤맸을 것 같은데 좀 수월하게 풀게 된 것 같다.
  • 예전에는 Level1도 쩔쩔 맸던 것 같은데, Level2도 이제는 부담감이 조금은 덜 해진 것 같다.