2022 KAKAO BLIND RECRUITMENT

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.

각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.

신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.

한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.

k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.

유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.

다음은 전체 유저 목록이 [“muzi”, “frodo”, “apeach”, “neo”]이고, k = 2(즉, 2번 이상 신고당하면 이용 정지)인 경우의 예시입니다.


def solution(id_list, report, k):
    answer = [0] * len(id_list)
    report = set(report)
    lst= {}
    check = {}
    for i in report:
        a,b = i.split(' ')
        
        if b not in check:
            check[b]=1
        else:
            check[b]+=1
            
        if a not in lst:
            lst[a]= [b]
        else:
            if b not in lst[a]:
                lst[a]+=[b]
                
    for id_,n in check.items():
        if n>=k:
            for user,user2 in lst.items():
                if id_ in user2:
                    answer[id_list.index(user)]+=1
                    
    return answer

id_list를 이용해 user 데이터를 만들어 놓고 report 컬럼을 이용해 zip 형식으로 list,report를 묶는다라는 가정으로 설계를 했는데 결과적으로 set을

이용해 중복으로 등장하는 데이터를 제거하고 신고가 완료 되어 k 값이 되는 user를 뽑아 출력한다.

없는 숫자 더하기

def solution(numbers):
    answer=0
    numbers.sort()
    print(numbers)
    for i in range(0,10):
        if i in numbers:
            print(i)
        else:
            print("숫자 없다")
            answer+=i
    return answer

numbers는 정렬되지 않은 1부터9까지의 데이터가 들어올 때 없는 숫자를 찾아 모두 sum한다.

numbers를 정렬하여 0-9 구조로 만들어주고 1부터10 까지 데이터가 든 list를 반복문을 통해 만들어주고 만든 데이터들을 이용해 주어지는 numbers를 굴려서 없는 숫자들을 체크하고 answer에 계속 더해준다.

월간 코드 챌린지 [내적]

def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer+= a[i-1]*b[i-1]
    return answer

아주 쉽게 문제에 해답이 있다 “ a[0]b[0] + a[1]b[1] + … + a[n-1]*b[n-1] “ a와 b 배열 시작부터 n-1까지 올라가며 a와b를 곱해주는데

반복문을 통해 a 의 길이만큼 반복하는데 연산은 a[n-1]*b[n-1]으로 편하게 대입 할 수 있다.

폰켓몬

def solution(nums):
    answer = 0
    set_nums = set(nums)
    if len(set_nums) >= len(nums) // 2 :
        answer = len(nums) // 2
    else :
        answer = len(set_nums)

    return answer

nums는 112233 과 같은 일반적인 상수가 들어오는데 이 문제의 핵심은 반복되는 숫자가 적은 number를 기준으로 n/2개의 k 포켓몬을 골라주는것이 핵심인데

set_nums 에는 nums의 중복을 제거한 값을 넣어준다

ex) 222441 이라면 Set -> 2,4,1 // n/2 개의 k를 뽑아야하는데 6개라3개를 뽑는다 그러면 2,4,1 자연스럽게 도출 가능.

만약 222221 과 같이 6개라 3개를 뽑아야하는 구조인데 set을 통해 2와1밖에 남지않는다면 가공되지 않은 nums의 /2 값을 한 데이터만 가져온다

📌 FEELINGS/FINDINGS

세달간 블로그 운영을 중단했는데, 취업이 완료되어 포스트를 중지했다.

사실 서류 광탈에 번아웃이 와서 한달간 토익 학원을 다니기도, 한 달간 아무것도 안하고 쉬기도 했다.

6월 1일 고대하던 취업성공

Android 개발자로 취업을 했는데, 서울로 상경하게 되었다.

회사는 성수역으로 각종 엔터와 스타트업들로 출근길, 점심시간, 퇴근길은 부산에 살던 나에게 살면서 보지못했던 풍경을 볼 수 있는 기회였다.

첫 출근에 부풀어 오르는 기대감을 한 껏 차려입은 드레스코드를 통해 표출했다.

사수는 대리와 주임, 그들은 부트캠프 출신의 고졸이였고 친숙함이 마치 고향집의 옆집에 살던 “옆집 형”처럼 느껴졌다.

맛있는 밥을 사주셧고, 업무에 적응하기 위한 도움은 일절 없었다.

내가 Java를 주로 해왔기 떄문에 Kotlin을 사용 해야하기 떄문에 학습의 기간을 가졌기 떄문일까, Java로 개발한 프로젝트를 Kotlin으로 마이그레이션을 진행하면 해당 언어에 적응이 조금 더 쉬울 것 이라고 조언해주셨다.

회사 생활은 별 다를 것 없이 좋았다, 그러나 계약서를 쓰고 출근하며 슬며시 올라오던 그들의 진가를 보아버렷다.

  1. 그들은 업무에 대한 시간분배가 전혀 없다. -> 분명히 POC처럼 프로젝트를 배당받아 개발을 진행하고 있는 시즌인데, 3PM가 되면 사람들이 (개발팀 할 것 없이 모든 팀이) 사라졌다…(퇴근시간:5:30PM) 그러곤 퇴근시간이 다가오면 슬금 슬금 한 두명 씩 자리로 돌아와 퇴근 준비를 한다.

  2. 모든 인력들의 커뮤니케이션문제들 -> 이건 중소기업 할 것 없이 모든 회사에서 겪는 문제같다, 항상 모집공고에는 타 부서와 원활한 커뮤니케이션을 요구하는데 아마도 이 때문이 아닐까. 극에 달한 케이스로 타 부서 내부에서는 점심조차 팀원들이 각자 먹는다… 백엔드는 백엔드끼리, 프론트는 프론트끼리.. 경영은 경영끼리 그 흔한 웰컴보딩기간에 백엔드 팀끼리 식사를 …했다..

  3. 회사의 비전을 보고 개발하는게 아니라 “거쳐가는 정거장”느낌이 강하게 들었다. -> 연차가 쌓이고 이직을 하는 것이 업계의 정통이라지만, 비전의식도, 자기주도적인 빌드업도 없다. 그저 윗 사람은 아랫 사람에게 TASK를 던져주고 아랫 사람은 고민없이 TASK를 받아 치는 정도..

회사 생활하는 도중에 더 좋은 계약조건으로. 웹 백엔드 개발자로 오퍼가 들어왔다.

고민없이 개발 팀장님과 상의 후에 퇴사하고 바로 다음주부터 출근하게 되었다.

옮기는 회사는 옮기기 전 회사와 1시간을 텀을 두고 본 면접이 였는데, 해당 회사의 TCO님은 미래에 대한 비전이나, 유튜브에서 보던 유명한 TCO님을 보는 듯 했다.

해당 기업은 강남에 위치하고, 사무실 분위기도 쾌적하고 넓고 딱딱함이라곤 찾아 볼 수 없는 편안한 분위기였다.

하지만 “게임개발” 이라는 부족한 정보로 취업을 했는데 알고보니.. 도박게임 사이트였다.

예전부터 우리 가족은 신앙은 없지만, 양심, 도덕성을 중시여겨 도박, 다른 사람이 피해를 입는 도박은 내게 큰 두려움과 같은 존재였다.

한게임에서 진행하는 포커나 일종의 카드 게임들은 일종의 사이버머니(가상)에서 시작해 가상으로 끝난다면, 해당 업체는 슬롯머신이나 바카라와 같은 사행성 게임에 가상화폐(이더리움,비트코인)을 이용하여 게임을 하는 곳 이였다.

손발이 덜덜 떨려 점심시간에 밥도 못 먹고 야외 테이블에 앉아 줄담배만 피우다 결국 TCO와 상담을 통해 퇴사를 선택했다.

해당 회사에서 배운점은 .ASP core 라는 기술으로 back단을 구성하는데 RESTfull한 구조로 설계되고, DB역시 Resouce 별로 db를 독립적으로 운용하는게 특이점이 였다.

어쩐지.. 모집공고에 게임개발.. 덩그러니 쓰여있고, 회사에 대한 정보가 1도 없엇다..

검색해보니 바카라와 같은 게임에서 현금이 흐르는 사행성 게임은 제작/ 관리/ 업데이트를 해도 잡혀간다 라는 뉴스를 발견했다..

앞으로는 어떤 회사를가서 어떻게 기여를 하고 어디서 날 필요로 하는지 심도깊은 고민을 하고 다음 회사를 도젼 할 수 있게 된 것 같다..

이 일이 있고 일주일간 손발이 떨려서 아무것도 하지 못했다, 서울에 와 기쁨으로 가득찬 도전을 하던 나는 세상이 무너지는 듯 한 고통을 느꼇다, 물론 내 탓이 아니고 운이 좋지않게 내가 당한것 이라지만..

더 좋은 개발자가되어 내 도덕성을 지키며 많은 돈을 버는 개발자가 되고 싶다.

누군가 내 블로그에 방문하여 글을 설마 읽을까 하고 두서없이 쓰지만, 앞으로는 내가 다음에 TIL을 정독 할 떄를 위해서 최소한 오타와, 문맥이 이상한 부분은 고치도록 노력 해야겠다.

📌 FUTURE

웹사이트 래거시 제거 ㅋㅋㅋ

오탈자 검수하고 모든 POST 점검하기

✅ Week list

  • 9시에 일어나서 9시에 잠들기

남들이 땅을 뚫고 나올 때, 나는 왜 땅 위로 나오지 못 할까 조급해 하지말자.

나는 죽순 언젠가 땅을 뚫고 올라갈 때, 성장하기 위한 에너지를 비축하고 있다