알고리즘/프로그래머스 - JS

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📚 나의 풀이 1시간을 고민하였지만 풀지 못했다. 아래 풀이는 최대한 풀어본 풀이다 콜백 형식으로 하면 이 문제를 풀기 어렵다. 개구간 범위가 최대 1억이기 때문이다. 그래도 일단은 풀어보았다. 나의 풀이는 간단하다. 1. 요격 가능한 모든 x좌표를 구하고 각 x좌표마다 최대 몇발의 미사일을 요격할 수 있는지 객체를 통해서 파악한다. 2. 최대로 요격할 수 있는 첫 번째x좌표를 구한다. (Map 객체의 순서보장성을 활용했다) 3. targets.filter를 통해 2번에서 구한 x좌표가 범위에 있으면 해당 미..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 function solution(survey, choices) { const scores = getScoresByPersonalityType(survey, choices); const resultOfPersonalityTypeTest = calculateScores(scores); return resultOfPersonalityTypeTest; } function getScoresByPersonalityType(survey, choices) { // 성격 유형별 점수 const scores = { ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 요약 하면 간단하다. 현재 보관되어있는 개인정보 수집 일자를 약관 종류에 따라 유효기간 만료일을 알아내서 오늘을 기준으로 만료일이 지났다면 폐기하면 된다. 바로 Date를 사용하면 조금 더 편리하겠다라고 생각해서 적용시켰다. 1. today를 new Date에 넣어준다. (구분자가 "-" 여야 ISO 8601 표준에 따라 날짜를 표기한다) today = new Date(today.replace(/[.]/g,"-")) 2. terms를 약관 종류에 따라 해당 유효기간을 알 수 있도록 객체로 변경하기 ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 틀린 풀이 처음 생각은 아 모든 numbers를 조합해서 배열로 만든 뒤 Math.max()로 가장 큰 수를 찾아야 겠다. 했는데 numbers의 길이가 100,000이라고 한다면 경우의 수는 100,000! 이고 1억 아니 1경 아니 1해 아니 1000해도 가뿐이 넘기는 숫자라서 계산이 불가능하다. 하지만 dfs도 복습할겸 해서 테스트 케이스만 통과하는 코드를 만들어 보았다. 그러나 생각보다 코드가 바로 생각나지 않았다. (복습이 필요할 것 같다) dfs를 돌리면 result 배열은 1번 예제에서..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 어떻게 풀어야 할까 고민을 많이 했다. 엄청어렵기보단 문자열을 어떻게 잘 다루는지 알아보는 문제 같았다. 해야할 것 1. 어떤 장르가 가장 재생이 많이 되었는지 알아야한다. 2. 해당 장르에서 많이 들은 순으로 노래를 정렬해야한다. 3. 장르당 최대 2곡까지만 저장하고 나머지는 버린다. 4. 해당 장르 노래의 고유 번호를 retrun 해야한다. 1. 속한 노래가 많이 재생된 장르를 내림차순으로 배열안에 정렬하기 // 1. 속한 노래가 많이 재생된 장르를 내림차순으로 배열안에 정렬 const rank..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 문제가 길어서 어려운 문제인가 싶었는데 다 읽고나니 괜히 겁먹었던 것 같다. 결론적으로 파일을 삭제하기 위해 드래그를 해야하는데 최소 사각형으로 드래그했을 때의 좌표값을 구하면 된다. 모든 #의 좌표를 구해서 최적의 lux,rdx luy,rdy를 구해도된다. 굳이 모든 좌표를 구해야 하나 싶어서 조금 더 생각해보았다. 상하좌우 각 끝점을 구하면 조금 더 쉽게 풀수 있을 것 같았다. 예를 들면 아래와 같다. 1. 맨 왼쪽에있는 파란색 파일의 luy = 3 2. 맨 위쪽에있는 하늘색 파일의 lux = ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 처음에는 targets을 반목문을 돌리면서 각 keymap를 돌아다니며 해당 알파벳에대해 최소로 누를 수 있는 횟수를 구할려고 했으나 시간이 오래걸릴 것 같아서 다른방법을 고민해보았다. 문자열을 작성하고자 할때 A는 최소 n번 B는 최소 m번 등 이런식으로 keymap에서 각 최소 횟수를 파악해서 객체안에 알파벳별로 넣으면 될 것 같았다. 1. keymap을 반복문을 사용해서 알파벳 별로 최소누를 수 있는 횟수를 저장한다. 2. targets에 있는 문자열을 for문을 통해서 해당 알파벳이 keym..
나의 풀이 각 트럭마다 위치를 지정해줘서 1초가 지날때마다 위치를 한칸씩 움직여줘서 다리 길이랑 위치가 같을때 도착을 카운트하면 되겠다 싶었다. function solution(bridge_length, weight, truck_weights) { const trucksCrossingBridge = [] let currentBridgeWeight = 0 let second = 0 while(true) { // 현재 다리의 무게가 0이고 대기중인 트럭이 없을 때 '초' return if(!currentBridgeWeight && !truck_weights.length) return second // 다리를 지나가고있는 트럭이 있을 때 if(trucksCrossingBridge.length) { // 트럭 ..
나의 풀이 queue로 풀지만 index가 필요하기에 배열을 이중배열로 만들어서 풀어야겠다 싶었다. 위 예제로 보자면 priorities = [ [2,0] , [1, 1], [3, 2], [2, 3] ] 이런식으로 [[priority, index], ....] 이렇게 구성이 된다. 이것을 기준으로 더 높은 우선순위가 없다면 queue에 들어간다 즉 처리된다는 뜻이다. 그런데 이때 index === location 이면 바로 결과값을 return 한다. 더 높은 우선순위가 있다면 다시 priorities 배열에 넣어준다. function solution(priorities, location) { const queue = [] priorities = priorities.map((priority, index)..
개발자성장기
'알고리즘/프로그래머스 - JS' 카테고리의 글 목록 (3 Page)