네이버 부캠 4기 수료한 이후, 2월은 게임듀오라는 회사에서 스카우트 제안이 와서 약 3주 정도 2차 면접까지 열심히 준비를 했다.... 결과는 비록 좋진 않았지만,,,
이후, 3월 부터 5월 초 까진 18개의 기업에 대한 서류를 지원하였다..
그중 4개 기업에 대해서는 코테와 AI 면접을 모두 통과하고 1차 면접을 볼 수 있었다 !
결과는,,, 모두 탈락!! 그래서, 내가 과연 부족한 것이 무엇인지 하나씩 파악했다 ...!
가장 중요한 원인은 서류를 지원할 때 굉장히 포괄적으로(걍 ㅈㄴ 못씀) 작성하였고, 이러한 자소서를 가지고 면접에서 질문을 받으려니 면접관 입장에서도 질문거리가 없었다... 이것이 서류 탈락 ~ 1차 면접에서 모두 탈락 ~ 의 원인이라고 생각한다..(즉, 내 능력과 경험, 그리고 내 자신을 글로써 제대로 표현을 못해서 인사담당자 입장에서도 판단을 잘할 수 없었던 것이지..)
이후, 6월 현재, 현대카드, KB 증권 두 기업에 대해서는 자소서를 싸악 갈아버리고 새로운 마음으로 지원을 했다! (면접왕이형 구독, 좋아요, 도서 구매 필수 !)
여하튼, 한 동안 면접에 의해 놓고 있던 코테를 다시 감을 잡아야하기 때문에 이와 같이 필요할 때 마다 Velog를 들리려는 계획이다..ㅎ)
전국의 모든 취준생들 화이팅!!
광물을 캐려는 데 곡괭이 3종류가 있으며, 광물 역시 3종류가 있다. 이때, 곡괭이 별로 광물캐는 피로도가 다른데, 모든 경우의 수를 파악해서 피로도가 가장 적은 경우의 결과 값을 구하는 문제 !
백트래킹의 감을 다.. 잃었다.. 2달 정도 놓았더니 싸악 사라졌다.. 이론과 어떻게 적용할 지 느낌만 있을 뿐.. 써야되는데...하고 나락에 간 느낌
def solution(picks, minerals):
sum = 0
for x in picks:
sum += x
# 캘 수 있는 광물의 개수
num_min = sum * 5
if len(minerals) > num_min: # 주어진 광물이 캘 수 있는 광물 수보다 크면
minerals = minerals[:num_min]
# 광물 조사 -> 50개 까지 가능하니까 크기 10인 이중 리스트
cnt_min = [[0, 0, 0]for x in range(10)] # dia, iron, stone
# 5개 까지 캘 수 있으니 5의 몫(index)
for i in range(len(minerals)):
if minerals[i] == 'diamond':
cnt_min[i//5][0] += 1
elif minerals[i] == 'iron':
cnt_min[i//5][1] += 1
else :
cnt_min[i//5][2] += 1
# 피로도가 높은 순서대로 광물 정렬
sorted_cnt_min = sorted(cnt_min, key = lambda x: (-x[0], -x[1], -x[2]))
# 피로도 계산
answer = 0
for mineral in sorted_cnt_min:
d, i, s = mineral
for p in range(len(picks)):
if p == 0 and picks[p]>0: # dia 곡괭이
picks[p]-=1
answer += d + i + s
break
elif p == 1 and picks[p]>0: # iron 곡괭이
picks[p]-=1
answer += 5*d + i + s
break
elif p == 2 and picks[p]>0: # stone 곡괭이
picks[p]-=1
answer += 25*d + 5*i + s
break
return answer
광물의 피로도가 높은 순서대로 하고, 곡괭이도 조건 문을 피로도 낮게 캐는 것들로 순서대로 구현해서 차례대로 처리하는 ... 음 ,, 구현은 역시 대단하다 !
a=[[1,1,1],[5,1,1],[25,5,1]]
res=987654321
m=dict()
m["diamond"]=0
m["iron"]=1
m["stone"]=2
# DFS 함수 구현
def go(idx, d, ir, s, minerals, p):
# 종료 조건
# 모든 광물을 캤거나 남은 도구가 없을때
if idx >= len(minerals) or (not d and not ir and not s):
global res
# 현재까지 구한 값과 최솟값을 비교하여 갱신
res = min(res, p)
return
dp = 0
ip = 0
sp = 0
# 다음 5개의 광물에 대하여 더해준다.
for i in range(idx, min(idx+5, len(minerals))):
dp += a[0][m[minerals[i]]]
ip += a[1][m[minerals[i]]]
sp += a[2][m[minerals[i]]]
# 다이아몬드를 채취하는 경우
if d:
go(idx+5, d-1, ir, s, minerals, p+dp)
# 철을 채취하는 경우
if ir:
go(idx+5, d, ir-1, s, minerals, p+ip)
# 돌을 채취하는 경우
if sp:
go(idx+5, d, ir, s-1, minerals, p+sp)
# 문제 해결 함수 구현
def solution(picks, minerals):
global res
# DFS 시작
go(0, picks[0], picks[1], picks[2], minerals, 0)
return res
느낀점
역시 백트래킹, DFS가 깔끔하고,, 내가 원했던,, 크으 굳
기가 막힌다 ! 정확히 이해하고 넘어가자 FLOW