https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[카누식 코드]
def solution(record):
rec_list, rec_dict, answer = [], {}, []
for i in record:
rec_list.append(i.split())
for i in rec_list:
if i[0]!='Leave':
rec_dict[i[1]]=i[2]
for i in rec_list:
if i[0] == 'Enter':
answer.append(rec_dict[i[1]]+'님이 들어왔습니다.')
elif i[0] == 'Leave':
answer.append(rec_dict[i[1]]+'님이 나갔습니다.')
return answer
1. spilt을 통해 명령어/user_id/닉네임을 구분한다.
2. 명령어가 enter & dict에 새로 추가 -> {user_id : 닉네임}으로 새로 dict에 요소 추가
명령어가 enter & dict에 id 존재 -> 해당아이디의 밸류를 새로운 닉네임으로 수정
명령어가 change -> 해당 아이디의 밸류 새로운 닉네임으로 수정
(세가지 case 모두 rec_dict[i[1]]=i[2]로 해결가능)
3. loop를 통해 record를 돌며 enter와 leave에 한해
아이디별 딕테이션 밸류값 + 출력메세지 answer에 append
[다른분들 코드]
def solution(record):
answer = []
namespace = {}
printer = {'Enter':'님이 들어왔습니다.', 'Leave':'님이 나갔습니다.'}
for r in record:
rr = r.split(' ')
if rr[0] in ['Enter', 'Change']:
namespace[rr[1]] = rr[2]
for r in record:
if r.split(' ')[0] != 'Change':
answer.append(namespace[r.split(' ')[1]] + printer[r.split(' ')[0]])
return answer
비슷하게 푸신듯
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.2] - 두 큐 합 같게 만들기 (2022 KAKAO TECH INTERNSHIP) (0) | 2023.04.25 |
---|---|
[프로그래머스 Lv.2] - 튜플 (2019 카카오 개발자 인턴십) (0) | 2023.04.04 |
[프로그래머스 Lv.2] - 파일명 정렬 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.03.23 |
[프로그래머스 Lv.2] - 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.03.20 |
[프로그래머스 Lv.2] - 압축 (2018 KAKAO BLIND RECRUITMENT) (0) | 2023.03.18 |