programmers
-
[프로그래머스] 오픈채팅방 - javascript기타/코딩테스트 2022. 6. 26. 01:12
문제 모든 유저는 [유저 아이디]로 구분한다. 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다. 나의 풀이 function solution(record) { let messages = [], answer = []; const member = {}; const content = (data) => { const typeMsg = data[0] == "Enter" ? "들어왔습니다." : "나갔습니다."; return `${member[data[1]]}님이 ${typeMsg}`; }; record.forEach((v, i) => ..
-
[프로그래머스] 없는 숫자 더하기 - javascript기타/코딩테스트 2022. 6. 22. 21:54
문제 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 나의 풀이 function solution(_numbers) { // 0~9 까지 더한숫자 = 45 return 45 - _numbers.reduce((preVal, curVal) => preVal + curVal, 0); } 배열에 없는 수를 모두 더한다고 했을 때 reduce를 사용해서 계산해 보아야지 라는 생각이 들었다. 그런데 그를 위해서는 없는 숫자를 배열로 만들어야했다. 그래서 0~9라는 숫자를 배열에 넣어놓고 numbers를 for문으로 돌리면서 숫자를 찾아 sli..
-
[프로그래머스] [1차] 비밀지도 - javascript기타/코딩테스트 2022. 6. 21. 12:51
문제 1. _n : 정사각형의 한 변의 길이 2. 지도에는 공백 " "(0) 또는 벽 "#"(1) 이 표시되어 있음 3. 전체 지도는 지도 1과 지도 2를 겹쳐서 얻을 수 있음 4. 지도 1과 지도 2중 "#"이 있는 칸은 전체 지도에서 벽(#) 5. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서 공백( ) 6. 1 = #, 0 = ' ' 나의 풀이 function solution(_n, _arr1, _arr2) { const answer = []; for (let i = 0; i < _n; i++) { const map1 = _arr1[i].toString(2).padStart(_n, "0"); const map2 = _arr2[i].toString(2).padStart(_n, "0"); c..
-
[프로그래머스] 로또의 최고 순위와 최저 순위 - javascript기타/코딩테스트 2022. 6. 21. 00:45
문제 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어졌습니다. 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요. 나의 풀이 function solution(_lottos, _winNums) { // 모르는 번호 개수 let coverCnt = 0; _lottos.forEach((v, i) => { const winIdx = _winNums.findIndex((e) => e == v); if (winIdx > -1) _winNums..
-
[프로그래머스] 키패드 누르기 - javascript기타/코딩테스트 2022. 6. 16. 20:55
문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 1. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당 2. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용 3. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용 4. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용 4-1. 만약 두 ..
-
[프로그래머스] 실패율 - javascript기타/코딩테스트 2022. 6. 13. 22:58
문제 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라. 실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 내 풀이 function solution(_n, _stages) { const answer = []; for (let i = 1; i { if (v >= i) challenge++; // 스테이지에 도달한 플레이어 if (v == i) notClear++; // 스테이지에 도달했으나 클리어하지 못한 플레이어 }); answer.push({ st..
-
[프로그래머스] 폰켓몬 - javascript기타/코딩테스트 2022. 6. 13. 22:53
문제 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요. 내 풀이 function solution(_nums) { let answer = 0; const numSet = new Set(_nums); const choose = _nums.length / 2; answer = choose < numSet.size ? choose : numSet.size; return answer; } ㅎ.. 처음에 이상한 삽질을. . 문제 이해못하고 경우의 수 구해서 어떻게 하지 한참을..
-
[프로그래머스] 신규 아이디 추천 - javascript기타/코딩테스트 2022. 6. 13. 22:30
문제 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. 7단계 new_id의 길이가 2자 이하라면, new..