코딩 테스트 스터디/프로그래머스

[level 2] 오픈채팅방

남쪽마을밤송이 2022. 7. 21. 21:35

 문제 

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

 

프로그래머스

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

programmers.co.kr

 사용 언어 

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