all category

cheetsheet

[Cheat Sheet] 소인수 분해 코드

function solution(n) { let answer = [] let divisor = 2 while (n >= 2) { if (n % divisor === 0) { answer.push(divisor) n = n / divisor; } else divisor++; } return answer } 2부터 소인수분해를 시도합니다. 만약 n이 divsior로 나눠진다면 계속 divisor로 나눠줍니다. 나눠지지 않는다면 divisor의 값을 높여서 다시 비교해줍니다.

programmers

[Programmers Level 1] 이상한 문자 만들기 Javascript

⚡문제정보 문자열이 주어지고 문자열은 공백을 기준으로 나뉘어집니다 짝수 인덱스는 대문자로 홀수 인덱스는 소문자로 바꿔야하는데 띄어쓰기를 기준으로 단어 인덱스를 초기화해서 생각합니다. 🙄접근방법 1. 띄어쓰기를 기준으로 단어 인덱스를 초기화해야하니 먼저 " "를 기준으로 split()을 해줘야한다고 생각했습니다. 2. 각 요소의 인덱스를 한번 더 밟아야하니 각 요소마다 for문을 돌려주면서 짝수 인덱스는 대문자로 홀수 인덱스는 소문자로 만들어줘야겠다고 판단했습니다. 한계 결론적으로 for문을 2번 사용하게 되기때문에 시간복잡도가 늘어나는 문제가 있습니다. 이걸 해결할 방법을 모르겠네요.. 🔍나의 풀이 function solution(s) { let strange = s.split(" ") let answe..

programmers

[Programmers Level 2 스택] 올바른 괄호 Javascript

⚡문제정보 스택을 이용하면 쉽게 풀 수 있는 문제입니다. leetcode에서 비슷한 문제를 풀었는데 그것보다 조건이 좀 더 쉽네요! 🙄제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 🔍접근방법 stack을 구현하기 위해 값을 저장해줄 변수를 선언하고 for문을 순회하며 문자열이 '('인 경우 push ')' 인 경우 pop해준다. 🔍나의 풀이 function solution(s){ let stack = [] if(s[0] == ")") return false for(i=0 ; i

cheetsheet

[Cheat Sheet] 객체로 중복이 몇번 등장했는지 체크하기

function findrunner(arr) { let obj = new Object() for(i=0; i< arr.length ; i++) { if(obj[arr[i]] == undefined) { obj[arr[i]] = 1 } else{ obj[arr[i]]++ } } return obj } 중복이 있는 배열에서 중복값을 카운트해줄 필요가 있을 때 사용하는 코드입니다. map.set(a, (map.get(a) || 0) + 1); map 자료구조를 이용해서 위 코드와 비슷하게 작동시키는 방법입니다. or 처리로 if문을 생략할 수 있다는 장점..

programmers

[Programmers Level 1 해시] 완주하지 못한 선수 Javascript

⚡문제정보 한명 빼고 모두 완주한 마라톤 경기에서 완주를 못한 찐따 한명을 찾는 문제입니다. 동명이인이 있다는 조건이 있으니 단순하게 filter()를 이용해서 푸는 방법은 제한이 있을 것 같아요 항상 한명빼고 완주를 못하니까 두 배열을 비교해서 completion 배열에는 없는 한명을 찾아내면 되는 문제라고 생각했습니다. 🙄제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 🔍접근방법 없는 한명을 찾으면서 동명이인 케이스를 제거하기 위해 객체를 선언해주고 completion배열을..

programmers

[Programmers Level 1 정렬] K번째 수 Javascript

문제정보 원본 배열이 주어지고 2차원배열로 이루어진 commands도 주어지네요 i번째부터 j번째까지 자르고 정렬.. 엥..? 이거 완전 slice()하라는 소리 아니냐? 싶어서 slice()로 구현해봤습니다. 나의풀이 function solution(array, commands) { let answer = [] commands.forEach(ele => { let sorter = array.slice(ele[0]-1, ele[1]).sort((a,b) => a-b)[ele[2] -1]; answer.push(sorter) }) return answer } forEach로 slice해주고 문제를 풀었습니다. 근데 인덱스는 0부터 세지만 문제는 1부터 숫자를 세서 각각 -1을 해줘야 답이 제대로 반환되네요..

programmers

[Programmers Level 0] 로그인성공? Javascript

문제정보 내용 id,pw로 이루어진 각 요소가 길이 2인 2차원 배열이 주어집니다. 1. id,pw 모두 일치하는 경우 login 2. id만 일치하는 경우 wrong pw 3. id가 일치하는 회원이 없다면 fail 3가지 케이스에 대한 처리를 해주면 되는 문제입니다. 간단하게 해결할 수 있을 것 같네요 예시 나의풀이 function solution(id_pw, db) { let answer = 'fail' db.forEach(ele => { let id = ele.includes(id_pw[0]) if(id == true) { ele.includes(id_pw[1]) ? answer = "login" : answer = "wrong pw" } }) return answer } 저는 forEach와 삼..

programmers

[Programmers Level 1] 모의고사 Javascript

⚡문제정보 소신발언 , 화나서 죽을 뻔 했습니다. 🙄제한사항 시험은 최대 10,000 문제로 구성되어있습니다. 문제의 정답은 1, 2, 3, 4, 5중 하나입니다. 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요. 🔍접근방법 1. 1,2,3 번 학생이 찍는 패턴을 답과 비교해준다. 2. 맞춘 갯수를 카운팅해준다. 3. 등수를 제한조건에 맞춰서 정렬한다. 아주 쉽게 해결할 수 있었을 것 같았습니다. 제출을 해보기전까지는.. 🔍나의 첫번째 풀이 function solution(answers) { let result = { "1" : 0, "2" : 0, "3" : 0 } let first = [1,2,3,4,5] let second = [2,1,2,3,2,4,2,5] ..

냠냠맨
'분류 전체보기' 카테고리의 글 목록 (48 Page)