hye-log

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

CodingTest/Programmers

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

iihye_ 2022. 8. 16. 17:20

0. 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=python3 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

1) 주어진 record 자르기

2) dict에 (id: name) 저장하기

3) 문구 출력하기

 

2. 입출력

# input
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"]

# output
answer = ["Prodo님이 들어왔습니다.", "Ryan님이 들어왔습니다.", "Prodo님이 나갔습니다.", "Prodo님이 들어왔습니다."]

 

3. 코드

def solution(record):
    answer = []

    # record 자르기
    record_pre = []                                                         # 자른 record 저장할 곳
    for i in range(len(record)):
        record_pre.append(record[i].split(' '))                             # 띄어쓰기 단위로 자르기

    # dict에 (id: name) 저장하기
    record_dict = {}                                                        # record의 (id: anme) 저장할 곳
    for i in range(len(record_pre)):
        if record_pre[i][0] == 'Enter' or record_pre[i][0] == 'Change':     # Enter거나 Change이면
            record_dict[record_pre[i][1]] = record_pre[i][2]                # dict에 (uid, name) 쌍 추가

    # 문구 출력하기
    for i in range(len(record_pre)):
        name = record_dict[record_pre[i][1]]
        if record_pre[i][0] == 'Enter':
            answer.append(name + '님이 들어왔습니다.')
        if record_pre[i][0] == 'Leave':
            answer.append(name + '님이 나갔습니다.')

    return answer

 

실행 결과

 

4. 알게된 점

1) dict 활용

처음에는 닉네임이 변경하면 해당하는 유저 아이디를 찾아 닉네임을 바꾸는 방식으로 코드를 작성했는데,

만약 데이터가 많아지는 경우 반복문도 증가하고 비효율적이라고 판단하여,

유저 아이디와 닉네임을 딕셔너리 형태로 저장하는 방법으로 코드를 작성함

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Programmers/open_chatting.py

 

GitHub - iihye/Algorithm

Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

728x90
Comments