본문 바로가기
🔅코딩테스트 공부🔅/❗프로그래머스(Lv.2)

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

by 윤무무 2023. 4. 19.

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

 

프로그래머스

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

programmers.co.kr

 

1. 내가 작성한 풀이

user_id 라는 고윳값(key)은 그대로 두고 nickname(value)를 변경시키는 문제라서 딕셔너리를 사용했다.

 

Enter나 Change의 경우 nickname으로 value를 다시 변경할 수 있도록 처리해 주고,

 

Enter나 Leave일 경우 출력되어야 하기 때문에 "들어왔습니다" 혹은 "나갔습니다"로 변경해 준다.

 

이후 전체를 조건에 맞게 변경하면 된다.

 

- 첫 번째 제출 코드는 좀 더러워서 아래와 같이 수정해 줬다.

def solution(record):
    user = {}
    result = []
    for i in record:
        info = i.split()

        if info[0] in ("Enter","Change"): #nickname 변경
            user[info[1]] = info[2]
        
        if info[0] in ("Enter","Leave"): #출력을 위해 한글로 변경
            if info[0] == "Enter":
                info[0] = "들어왔습니다."
            else:
                info[0] = "나갔습니다."
            result.append((info[1],info[0]))
            
     
    for j in range(len(result)): #조건에 맞게 출력
            result[j] = str(user[result[j][0]] + "님이 " + result[j][1])
    
    return result

 

 

2. 수정

 

def solution(record):
    user = {}
    result = []
    for i in record:
        info = i.split()
        if len(info) == 3:
            user[info[1]] = info[2] 
    
    for i in record:
        info = i.split()
        if info[0] == "Enter":
            result.append('%s님이 들어왔습니다.' %user[info[1]])
        elif info[0] == "Leave":
            result.append('%s님이 나갔습니다.' %user[info[1]])
    
    return result

 

서식 지정자를 활용을 잘 못 하는 것 같다.

 

문자열 문제를 더 풀어봐야겠삼

댓글