문제
https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=python3
사용 언어
Python3
풀이 과정
이 문제 역시 쉬운 구현 문제여서 한 번에 통과!
이게 처음 내 코드인데 다른 사람 풀이를 보다 보니 느낀점이 있었다.
split( ) 했을 때 바로 변수에 할당하려고 하면 개수가 달라서 나처럼 len( ) 으로 한 번 더 조건문을 붙여줘야 하는데 개수는 다르지만 op, user_id 순서까진 같아서 굳이 조건문으로 나누지 않고 인덱스로 접근하면 더 편해보였다.
# Enter [유저 아이디] [닉네임]
# Leave [유저 아이디]
# Change [유저 아이디] [닉네임]
# 유저 아이디와 닉네임은 대소문자 구별
# 닉네임 중복 가능
def solution(record):
match = {}
for rec in record:
splits = rec.split()
if len(splits) == 3:
op, user_id, nickname = splits
match[user_id] = nickname
result = []
for rec in record:
splits = rec.split()
if len(splits) == 3:
op, user_id, nickname = splits
if op == "Enter":
result.append(f"{match[user_id]}님이 들어왔습니다.")
else:
op, user_id = splits
result.append(f"{match[user_id]}님이 나갔습니다.")
return result
따라서 아래는 변경해서 다시 제출한 코드의 시간이다. 별 차이 없을 줄 알았는데 조금 더 빨라졌다.
제출 답안
def solution(record):
match = {}
for rec in record:
splits = rec.split()
if len(splits) == 3:
op, user_id, nickname = splits
match[user_id] = nickname
result = []
for rec in record:
splits = rec.split() # op, user_id, nickname
if splits[0] == "Enter":
result.append(f"{match[splits[1]]}님이 들어왔습니다.")
elif splits[0] == "Leave":
result.append(f"{match[splits[1]]}님이 나갔습니다.")
return result
공부한 내용
f-string (Python 3.6 이상 부터 지원)
공부했던 내용이지만, 프로젝트 진행하며 JavaScript(TypeScript)에 익숙해져 백틱밖에 생각이 안났다..! f가 희미하게 기억나서 구글링해서 작성한 파이썬의 출력 방식.
이외에도 C언어와 유사한 string formatting, str.format 사용(Python 3 이상 부터 지원) 방식이 있지만 f-string 방식이 가장 편하고 속도도 빠르기 때문에 기억하자.
출력 방식이라고 해서 print( ) 안에서만 쓸 수 있나 했는데 이번 문제처럼 그냥 string 형식이면 어디든 사용할 수 있는 것 같다.
a = "song"
b = "hee"
print(f"{a}{b}") # songhee
출처: https://choiwonwoo.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B6%9C%EA%B2%A9-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95
'코딩 테스트 스터디 > 프로그래머스' 카테고리의 다른 글
[level 3] 네트워크 (0) | 2022.07.23 |
---|---|
[level 2] 게임 맵 최단거리 (0) | 2022.07.22 |
[level 1] 신고 결과 받기 (0) | 2022.07.20 |
[Level 1] 키패드 누르기 (0) | 2022.05.15 |
[Level 2] 정렬. 가장 큰 수 (0) | 2022.03.01 |