본문 바로가기

Web/Algorithm

(8)
2022 카카오 신입 공채 - k진수에서 소수 개수 구하기 문제 설명 보기 더보기 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으로 보았을 때가 ..
2022 카카오 신입 공채 - 신고 결과 받기 문제 설명 보기 더보기 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeach", "neo"]이고..
2019 카카오 개발자 겨울 인턴십) 크레인 인형뽑기 게임 1) 프로그래머스에 제출한 답. function solution(board, moves) { let answer = 0; let bucket = []; for(let pos of moves){ for(let x = 0; x 0 && bucket[bucket.length-1] === board[x][pos-1] ){ answer += 2 bucket.pop(); }else{ bucket.push(board[x][pos-1]); } board[x][pos-1] = 0; break; } } } return answer } reduce로 객체 인덱싱하는 것처럼 어떻게 해보면 행,열 바..
[프로그래머스 > 해시] 베스트 앨범 프로그래머스 문제 읽을 때면 종종 읽어도 읽은 것 같지 않은 느낌이 들 때가 많다.ㅎㅎ 많이 풀어보면 쉬워지겠지..ㅎㅎ흑 문제) 과정) 첫번째, 스트리밍 총합이 큰 장르 순으로 내림차순 정렬 되어야 하고, 두번째, 각 장르별 스트리밍 수가 많은 노래를 내림차순 정렬 세번째, 정렬된 상태에서 각 장르별로 노래 두개를 뽑아야 한다. 장르에 노래가 하나 뿐일 경우 하나만 뽑는다. 총 반환되는 값은 장르*2 ( - 알파)가 된다. 내가 재출한 해설) function solution(genres, plays) { let answer = []; let genres_ = Array.from(new Set(genres)); //중복 제거한 장르만 모아놓음 let target = []; genres_.forEach((g..
[ 프로그래머스 > 정렬 ]H-Index 문제 이해하기) 배열 안의 각 요소를 elem이라고 할 때 elem은 각 논문의 인용 횟수를 말하는데, elem이 h보다 작거나 같을 때는 elem값을, elem이 h보다 클 때는 h값을 h-index값으로 넣어야 한다. 이렇게 각 논문 마다의 h-index 값을 구한 뒤, 이 h-index값들 중 가장 큰 값을 최종 h-index값으로 반환해야 함. (문제에서 "나머지 논문이 h번 이하 인용"이 말은 h값이 될 수 있는 수중 가장 작은 수가 h가 되고, 이렇게 결정 된 h들 중에서 최댓값이 되어야 한다는 뜻이다. ) 위의 예제를 예로들면 citations = [3,0,6,1,5]; //elem === 3 이면 h는 3,6,5로 3 elem === h 즉 3을 반환 //elem === 0 이면 h는 0,..
[ 프로그래머스 > 해시] 위장 내 통과 코드 function solution(clothes) { let answer = 0; let closet = clothes.reduce((prev,now) => ({ ...prev, [now[1]]: (prev[now[1]] || 0) + 1 }),{}); let key = Object.keys(closet).length-1; let res = 1; while (key >= 0) { res *= closet[Object.keys(closet)[key]]+1 key--; } return answer = res - 1, answer; } 종류 - 모자:[빨강, 검정] , 상의:[긴팔, 민소매] , 하의:[미디스커트, 슬랙스, 숏팬츠] 라고 한다면 모자의 종류 2가지 상의의 종류 2가지 하의의 종류3..
[ 프로그래머스 > 해시] 완주하지 못한 선수 나의 첫번째 제출 코드 오답. function solution(participant, completion){ let answer = participant; completion.forEach((val,idx) => { participant.splice(participant.indexOf(val),1)[0] }); answer = participant[0] return answer; } 조급하게 이어진 시도들에서도 반복을 여러번 쓰는 for + 탐색() + splice로 데이터 삭제하는 방법을 버리지 못했다. 사실 뭐가 문제인지 잘 몰랐다. 나의 두번째 제출 코드 오답. function solution(participant, completion){ let answer =''; for(let i of comp..
비트 카운팅 알고리즘 내가 제출한 답 var countBits = function(n) { let result = []; let count = 0; while(n > 1){ result.push(n%2); n = Math.floor(n/2); } result.push(n); result.forEach((elem) => { if( elem === 1) count++; }); return count; }; 저리 간단한 걸 왜 더 어렵게 푼 것 같지. countBits = n => n.toString(2).split('0').join('').length; ---------------★문법 다시 체크----------------- 먼저, 숫자.toString(2)는 숫자를 2진수 문자열로 바꾼다. split('0')으로 문자열 안의..