본문 바로가기

Algorithm/카카오기출

(32)
[프로그래머스] 개인정보 수집 유효기간 / substr Level. 1 문제 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. 다음은 오늘 날짜가 2022.0..
[프로그래머스(Java)] 크레인 인형뽑기 게임 - Stack Level. 1 문제 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형..
[프로그래머스(Java)] 키패드 누르기 Level. 1 문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 2. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 3. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 4. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가..
[프로그래머스(Java)] 신고 결과 받기 - HashMap LinkedHashMap Set Map순회하는법 Stream Level. 1 문제 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고,..
[프로그래머스(Java)] 성격 유형 검사하기 - HashMap Level. 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개의 선택지가 있습니다. - 매우비동의 - 비동의 - 약간 비동의 - 모르겠음 - 약간 동의 - 동의 -..
[프로그래머스] 캐시 문제 풀이 #include #include #include using namespace std; // 대소문자 구분을 하지 않는다 // transform(str.begin(), str.end(), str.begin(), ::tolower); // 캐시 교체 알고리즘은 LRU(Least Recently Used) int solution(int cacheSize, vector cities) { int answer = 0; vector cache; if(cacheSize == 0) return cities.size()*5; for(int i=0; ibegin(), it->end(), it->begin(), ::tolower); bool flag = false; for(vector::iterator itt = ..
[프로그래머스] 튜플 / map 문제 풀이 #include #include #include #include #include using namespace std; typedef pair ii; vector solution(string s) { vector answer; map map; int n; // '{', ',' '}' 다 공백으로 replace for(int i=0; i> n){ map[n]++; } //벡터를 사용해 map을 value값으로 정렬 ( 튜풀 ) vector v(map.begin(), map.end()); sort(v.begin(), v.end(), [](ii a, ii b){ return a.second > b.second; }); for(ii a : v){ answer.push_back(a.first); } re..
[프로그래머스] 수식 최대화 / stack 문제 풀이 #include #include #include #include using namespace std; long long calc(long long a, long long b, char c){ long long n = 0; switch(c){ case '-': n = a-b; break; case '+': n = a+b; break; case '*': n = a*b; break; } return n; } long long solution(string expression) { vector priors = {{'-', '+', '*'},{'-', '*', '+'}, {'+', '-', '*'}, {'+', '*', '-'}, {'*', '-', '+'}, {'*', '+', '-'}}; long l..