본문 바로가기

Lv 110

[Lv.1] 개인정보 수집 유효기간 (카카오 신입/인턴 코딩테스트) 1. 문제 개인정보 수집 유효기간 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가.. 2023. 2. 7.
[Lv.1] 햄버거 만들기 1. 문제 햄버거 만들기 문제 설명 햄버거 가게에서 일을 하는 상수는 햄버거를 포장하는 일을 합니다. 함께 일을 하는 다른 직원들이 햄버거에 들어갈 재료를 조리해 주면 조리된 순서대로 상수의 앞에 아래서부터 위로 쌓이게 되고, 상수는 순서에 맞게 쌓여서 완성된 햄버거를 따로 옮겨 포장을 하게 됩니다. 상수가 일하는 가게는 정해진 순서(아래서부터, 빵 – 야채 – 고기 - 빵)로 쌓인 햄버거만 포장을 합니다. 상수는 손이 굉장히 빠르기 때문에 상수가 포장하는 동안 속 재료가 추가적으로 들어오는 일은 없으며, 재료의 높이는 무시하여 재료가 높이 쌓여서 일이 힘들어지는 경우는 없습니다. 예를 들어, 상수의 앞에 쌓이는 재료의 순서가 [야채, 빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵]일 때, 상수는 여섯.. 2023. 2. 6.
[Lv.1] 신규 아이디 추천 (카카오 신입/인턴 코딩테스트) 1. 문제 신규 아이디 추천 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 .. 2023. 2. 6.
[Lv.1] 성격유형 검사하기 1. 문제 나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 1번 지표 라이언형(R), 튜브형(T) 2번 지표 콘형(C), 프로도형(F) 3번 지표 제이지형(J), 무지형(M) 4번 지표 어피치형(A), 네오형(N) 4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다. 검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다. 각 질문은 1가지 지표로 성격 유형 점수를 판단합니다. 매우 비동의 네오형 3점 비동의 네오형 2점 약간 비동의 네오.. 2023. 2. 6.
[Lv.1] 문자열 나누기 1. 문제 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. .. 2023. 2. 5.
[Lv.1] 크레인 인형뽑기 게임 (카카오 인턴 코딩테스트, 예외처리 실수) 1. 문제 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데,.. 2023. 2. 3.
[Lv.1] 체육복 (JS 한글변수의 힘) 1. 문제 2. 전략 1) 생각보다 복잡하다. 학생은 원래 내꺼만있어서 빌려줄수 없는 경우, 도난당한 경우, 여벌이 있는 경우, 여벌이 있었는데 도난당해서 내꺼만있게 된 경우 총 4가지의 경우가 있는데 이를 변수로 고치다 보면 헷갈려서 조건문 작성이 복잡해지는 경우가 있다. 2) 그래서 토종 한국인은 역시 영어보단 한국어가 읽기 쉬우므로 한글변수를 적극 활용해보았다. 3) 계속 변화하는 state변수의 상황과 변화 상황을 쉽게 관찰하기 위해 console.log를 적극 활용했다. 4) 당연히 console.log는 빌드 전에 삭제하자. 5) 당연히 한글변수도 에러의 가능성이 있으므로 ctrl + shift + f 로 전체찾아서 전체 영어변수로 적절히 바꾸어주면 된다. function solution(n,.. 2023. 2. 2.
[Lv.1] 과일 장수 (예제로 알아보는 JS 배열의 시간복잡도) 1. 문제 2. 풀이 1 ( 안되는 풀이) function solution(k, m, score) { var answer = 0; let arr = score.sort((a,b)=>b-a) 큰 순서대로 배열을 정렬 while(arr.length>=m){ m으로 나눠지지 않을때까지 let f = arr.splice(0,m); 앞쪽부터 m만큼 잘라서 answer+= m * Math.min(...f) 자른것의 최소값(점수) * 갯수(m) 을 answer에 계속 더해준다. } return answer; //하지만 이거 안된다. } 이렇게 풀었는데 시간초과로 통과를 못하네? 로직은 맞는데..? 그래서 한참 검색하다가 발견한 이유 배열 메소드의 시간복잡도 때문이다. 시간 복잡도를 표기할 땐 대체로 빅오 표기법으로 .. 2023. 2. 2.