기타/코딩테스트
-
[프로그래머스] 오픈채팅방 - 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. 14. 13:30
문제 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 내 풀이 function solution(_s) { const number = [ /zero/gi, /on..
-
[프로그래머스] 실패율 - 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; } ㅎ.. 처음에 이상한 삽질을. . 문제 이해못하고 경우의 수 구해서 어떻게 하지 한참을..