https://programmers.co.kr/learn/courses/30/lessons/42888
내가 푼 풀이
요즘 너무 게으른 거 같아서 1일 1 알고리즘... 다시 도전...!
친구의 추천으로 풀게 된 문제인데, 레벨 2여서 비교적 빠른 시간 내에 쉽게 풀 수 있었던 문제이다.
파이썬의 dictionary를 이용해서 유저의 아이디를 key , 닉네임을 value로 두어서 푼 문제이다.
def solution(record):
answer = []
user_dict= {}
for i in range(len(record)):
func = record[i].split(' ')[0]
user_id = record[i].split(' ')[1]
if func != "Leave":
name = record[i].split(' ')[2]
user_dict[user_id] = name
for i in range(len(record)):
func = record[i].split(' ')[0]
user_id = record[i].split(' ')[1]
if func == "Enter":
answer.append(user_dict[user_id]+"님이 들어왔습니다.")
elif func == "Leave":
answer.append(user_dict[user_id]+"님이 나갔습니다.")
else :
continue
return answer
다른 사람 풀이
이 풀이 보고 솔직히 놀랐다.. 난 19줄로.. 해결했는데.. 2줄로... 풀다니... 역시..파이썬...!! 대단한거 같다..(더 공부해야지 ㅠㅠ)
startswith를 이용해서 문자열에서 처음 시작하는 걸 일치하는 지 아닌 지 판별하는 함수다.
str.startswith(str or tuple) 포멧이다. 반환 값으로는 True, False이다.
def solution(record):
user_id = { r.split(' ')[1]:r.split(' ')[2] for r in record if not r.startswith("Leave")}
answer = [user_id[r.split(' ')[1]]+'님이 들어왔습니다.' if r.startswith("Enter") else user_id[r.split(' ')[1]]+'님이 나갔습니다.' for r in record if not r.startswith("Change")]
'알고리즘' 카테고리의 다른 글
파이썬 / BOJ / 1914번 (하노이 탑) (1) | 2021.07.09 |
---|---|
파이썬 / 프로그래머스 / 튜플 (0) | 2021.06.05 |
파이썬 / BOJ / 11651 (좌표 정렬하기 2) (1) | 2021.03.08 |
파이썬 / BOJ / 9095번 ( 1,2,3 더하기) (0) | 2021.02.13 |
파이썬 / BOJ / 2563번 (색종이) (0) | 2021.02.10 |