오랜만에 파이썬으로 코딩테스트 문제를 푸려고 하니 자바스크립트 문법이랑 헷갈려서 조금 버벅였습니다.
코딩테스트 문제 아이디어 떠올리는 것 자체도 머릿 속에서 구조가 바로 안 잡히기도 했습니다.
다행히 낮은 난이도의 문제라서 적절한 시간 내에 풀이할 수 있었습니다.
첫 번째 문제는 10분, 두 번째 문제는 27분이 걸렸습니다.
두 문제 다 문자열을 이용한 문제였습니다.
첫 번째 문제
def solution(s):
sList = list(map(int, s.split(" ")))
answer = str(min(sList)) + " " + str(max(sList))
return answer
순간적으로 map함수의 구조가 생각나지 않았습니다.
한동안 집중적으로 Javascript를 공부하고 있어 JS의 Array Map 함수 구조인
array.map(function(currentValue, index, arr), thisValue) // JavaSctipr Map function
이 생각났습니다. 심지어 JS의 Map 자료구조도 생각나더군요.
기억을 되살리려 노력하지 않고 그냥 검색해서 찾았습니다.
map(function, iterable, ...) # Python Map Function
문법 헷갈리지 않도록 주의를 많이 해야겠습니다.
두 번째 문제 역시 문자열을 활용하는 문제였습니다. 이전에 한 번 풀이한 경험이 있어 어렵지는 않았지만, 오히려 기존 풀이가 기억나니 그걸 복기하려는 관성과 문제 자체를 풀어야하는 집중력이 충돌해서 약간 시간이 걸린 것 같습니다.
결과적으로 깔끔하게 풀이한 것 같습니다. 함수나 변수명을 예쁘게 짓는데에 노력해서 작성해봤습니다.
def solution(record):
userNameDict = {}
chatHist = []
answer = []
for rec in record:
user = rec.split(" ")
# user[1]:userId, user[0]:userAction, user[2]:userName
userAction = user[0]
userId = user[1]
if userAction == 'Enter':
userName = user[2]
userNameDict[userId] = userName
chatHist.append([userId, "님이 들어왔습니다."])
elif userAction == "Change":
userName = user[2]
userNameDict[userId] = userName
elif userAction == "Leave":
chatHist.append([userId, "님이 나갔습니다."])
for hist in chatHist:
userName = userNameDict[hist[0]]
userAction = hist[1]
answer.append(userName + userAction)
return answer
'CodingTest > Programmers' 카테고리의 다른 글
[ 프로그래머스 ] 서울에서 김서방 찾기 (0) | 2022.07.18 |
---|---|
[ 프로그래머스 ] 문자열 내 p와 y의 개수 (0) | 2022.07.18 |
[ 프로그래머스 ] 스킬체크 굿스타터 (0) | 2022.07.07 |
[ 프로그래머스 ] 문자열 내 마음대로 정렬하기 (0) | 2022.07.05 |
[ 프로그래머스 ] [1차] 다트게임 (0) | 2022.07.01 |