티스토리 뷰
난이도는 레벨 2이고 그렇게 어렵지는 않은 문제였습니다. 제일 중요한건 입력값이 10만가까이 주어지기 때문에 O(n)으로 끝내야합니다. n 제곱으로 가는 순간 시간 초과 뜰겁니다. 그래서 저는 파이썬의 가장 큰 장점이라고 생각하는 dictionary로 문제를 풀었습니다. 제가 알기로 파이썬의 dictionary가 Hash Table로 알고 있거든요. 그래서 키값으로 접근시 시간 복잡도가 O(1)로 알고 있습니다. 주소값으로 접근하는 것이니까요. 문제의 흐름을 보면 최종적으로 닉네임이 변경된 이후에 채팅창에 보이는 enter와 leave를 출력해달라고 하고 있어요. 그래서 마지막까지 닉네임이 변경된 것을 dictionart에 반영한 뒤에 이를 이용하여 id를 순회하면서 answer에 하나씩 append해주면 됩니다. append로 O(1)이니까 최대한 시간복잡도를 줄이는게 이 문제의 핵심입니다. 그래서 제 코드는 아래와 같아요.
def solution(record):
roc = []
dic = {}
for r in record: # 처음 순회하면서 바뀐 닉네임과 id를 dic에 기록
rs = r.split(" ")
if rs[0] != "Leave":
dic[rs[1]] = rs[2]
roc.append((rs[0], rs[1]))
answer = []
for r in roc: # 바뀐 닉네임이 dic에 전부 반영이 되었으면, Enter와 Leave에 따라서 answer에 문제 출력양식으로 넣어줌
behave, i_d = r
if behave == "Enter":
answer.append(f"{dic[i_d]}님이 들어왔습니다.")
elif behave == "Leave":
answer.append(f"{dic[i_d]}님이 나갔습니다.")
return answer
if __name__ == "__main__":
print(solution(["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]))
간단했습니다.
이후에는 이문제를 코틀린으로 풀어볼게요
'알고리즘 > Programmers' 카테고리의 다른 글
| [프로그래머스] 문자열 압축 in Python (0) | 2021.12.09 |
|---|---|
| [프로그래머스] 위클리 챌린지, 전력망을 둘로 나누기 in Kotlin (0) | 2021.12.08 |
| [프로그래머스] 위클리 챌린지, 전력망을 둘로 나누기 in Python (0) | 2021.12.03 |
| [프로그래머스] 피로도 in Python (0) | 2021.11.26 |
| [프로그래머스] KAKAO 불량사용자 in Python (0) | 2021.11.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 보조생성자
- 생성자
- 구간 합 구하기 4
- 백준알고리즘 #BFS #델타이동 #알고리즘풀이 #개발 #안전영역 #풀스택개발자가되고싶습니다. #노력할래요 # 꾸준히 # 화이팅! #비전공개발자
- Python
- 일반파라미터
- Java #객체지향 #상속 #생성자 #개념 #비전공개발자 #FullStack을 #향해
- 백준
- 비전공싸피합격
- 프로젝트구조
- 비전공개발자
- 기본생성자
- 앱개발
- 백준 #숨박꼭질3 #다익스트라 #알고리즘 #비전공개발자 #풀스택 #웹개발 #앱개발 #안드로이드 #python
- 참조연산자
- Java
- DP
- kotlin문법
- 프로그래머스
- 코틀린
- 중첩클래스와 내부클래스
- Kotlin
- 안드로이드 #안드로이드스튜디오 #Kotlin #앱개발 #안드로이드기초 #비전공개발자 #풀스택개발자 #앱개발자
- 추가합격후기
- 안드로이드
- Class
- 카카오
- Programmers #알고리즘 #Python #KAKAOINTERNSHIP #비전공개발자 #불량사용자
- 싸피5기
- 알고리즘
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함
