99클럽 코테 스터디 1일차 TIL
💬 첫날이니까 서론
며칠 전 네이버 코딩테스트 보고 심각성을 깨달았다.
한 2년 전쯤 대학원 갈지 취업할지 고민하면서 알고리즘 공부하다가 결국 대학원에 납치 된 이후로 알고리즘 공부를 아예 안했다.
근데 눈 떠보니 졸업논문 쓰고있고, 취업해야하고..
예전에 한 기억 살려서 코테봤다가 겨우 1솔했다.
이번에 쉬웠다해서 1차 멘붕.. 시간복잡도 고려안해서 2차 멘붕..
아무튼 그렇게 코테 공부해야지 생각했는데 마침 스터디 한다길래 냅다 참여. 심지어 무료에다가 열심히하면 선물도 줌 ..!!
아무튼 그래서 신청을 하려고 보니 비기너, 미들러, 챌린저 있길래 일단 네이버 코테의 쓴 맛을 보고 비기너로 신청을 하고 문제를 봤는데 .. 백준 단계 별 첫 문제 수준이라 미들러로 넘어가서 풀었다.
💬 오늘의 회고
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지:
처음에 성격 유형에 따라 분류할 때, 입력 데이터에 정해진 알파벳이 있는 줄 모르고 모든 알파벳을 고려해서 코드를 짜다가 .. 뭔가 이상해서 문제를 보니 정해진 성격유형이 있었다. 그래서 더 쉽게 짤 수 있었다. 문제를 잘 읽어야겠다. 비기너 바로 풀고 미들러로 넘어갔는데 두 문제 푸는 동안 40분 정도 걸린 것 같다. 목요일 스터디에는 미들러, 챌린저 한 문제 씩 풀어보고 싶다. 오늘 챌린저 풀이 설명 듣는데, 내가 안 푼 문제에 대해 이야기를 들으니까 스포당하는 기분이어서 다음 스터디에는 주어진 문제 무조건 풀고 들어야겠다고 생각했다.
- 무엇을 새롭게 알았는지:
스터디에서 재귀함수를 이용하여 푸신 분이 계셨는데, 제한사항이 널널하다면 재귀함수 보다는 직관적으로 이해할 수 있는 코드로 짜는게 좋다고 하셨다. 사실 나는 아직 알고리즘을 완벽하게 아는건 아니라 시간복잡도를 먼저 고려하는게 베스트지만, 나중에 실력을 키우면 직관적으로 이해할 수 있는 코드를 짜는 연습을 해야겠다.
- 내일 학습할 것은 무엇인지:
퇴근 후에 스터디에서 제공해준 문제은행에서 적당히 어려운거 한 문제 선별해서 풀고(DP), 시간복잡도 계산해서 보완하는 학습을 해보려고 한다.
프로그래머스 코딩테스트 문제
🌱 전체 코드
def solution(survey, choices):
answer = []
# 각 유형을 dictionary로 초기 점수 0점으로 세팅.
li = {"RT": 0, "CF": 0, "JM": 0, "AN": 0}
for i, surv in enumerate(survey):
# 문제에서 중간값이 4이므로 중간 점수를 0점으로 바꿈.
score = choices[i] - 4
# 만약에 유형이 반대로 세팅되어있으면 다시 바꿔주면서 점수에 -1 곱해서 거꾸로 만들어주기.
if surv not in list(li.keys()):
surv = "".join(list(surv)[::-1])
score *= -1
li[surv] += score
print(li)
# 왼쪽 유형이면 음수, 오른쪽 유형이면 양수임.
# 만약 중간값이면 알파벳 순서. 고려해서 else 조건으로 넣음.
for surv in list(li.keys()):
a, b = list(surv)
if li[surv] > 0:
answer.append(b)
else:
answer.append(a)
answer = "".join(answer)
return answer