알고리즘 18일차

(위코드 알고리즘 1회독 완료)

앞으로 어려운 문제 많이 보게 됥텐데 너무 어려우면 고민 많이 안하고 답도 좀 참고하고 배워야겠다. 일단 여러 문제를 알아가고 경험을 쌓는 것이 중요하기에.. 코테 이거 한 번에 된다 생각하면 안 되겠다. 카카오에서 크게 한 방 먹은 느낌.

참고 블로그
카카오 해설

1. 문제 : 2019 카카오 신입공채 코딩테스트 오픈채팅방

  • 난이도 무려 하.. 하..?!!

2. 접근 및 생각 :

  • 배열이 있으므로 뭔가 for loop을 막연히 돌린다는 생각은 했으나 문제 자체가 이해가 잘 되지 않아 정답 및 해설 참고.

3. 정답 및 내가 생각한 해설

idDict = dict()
# id값, 닉네임값으로 운영되는데 id값을 딕셔너리 형태로 부여한다. 여기서부터 사실 어려웠다.

def solution(record):
# 들어오는 닉네임 형태로 리코드가 배열로 들어온다.
  answer = []
  # 최종 리스트
  log_list = []
  # 로그 기록
  for i in record:
  # 먼저 배열을 for loop으로 돌린다.
    data_list = i.split(" ")
    # ~님이 입장했습니다. 이런 식으로 오니까 닉네임을 따로 뗀다."
    if data_list[0] == "Leave":
      log_list.append([data_list[1], "님이 나갔습니다."])
    elif data_list[0] == "Enter":
      idDict[data_list[1]] = data_list[2]
      # 여기서 닉네임과 아이디를 같이 생각하는 듯
      log_list.append([data_list[1], "님이 들어왔습니다."])
    elif data_list[0] == "Change":
      idDict[data_list[1]] = data_list[2]
      # 변동의 경우도 같이 생각하는 듯.
    
  for log in log_list:
    answer.append(idDict[log[0]] + log[1])
    # 로그 기록을 마지막에 answer에 넣는다.

  return answer

4. 사용된 개념

  1. for loop
  2. dict
  3. append
  4. 전역변수
    뭐 이 정도인 듯. 나중에 카카오 볼 때 다시 한 번 쭉 보자.
profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글