본문 바로가기

알고리즘119

[프로그래머스 LV2] 이모티콘 할인행사 JS https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요점 가입자 최대, 판매액 최대 n명에게 m개를 할인판매 이모티콘마다 할인율은 10%, 20%, 30%, 40% 기대이상 할인하는 이모티콘모두 구매 구매비용 합이 일정가격 이상이면 구매를 모두 취소하고 서비스 가입 목적 최대달성한 [가입자수, 매출액] 생각 유저 최대 100명, 이모티콘 최대7개 정해진 조합: 7개 이모티콘의 할인율 조합갯수 = 4^7 = 16384 유저마다 각 이모지를 구매.. 2023. 8. 23.
[프로그래머스 LV2] 무인도 여행 https://school.programmers.co.kr/learn/courses/30/lessons/154540 메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타냅니다. 어떤 섬으로 놀러 갈지.. 2023. 8. 22.
[프로그래머스 LV2] 광물캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 첫번째 풀이 dfs의 요점은 2가지다 1. 어딜 반복할거며 반복할때 필요한 매개변수들 2. 반복을 끝내는 조건 반복 function dfs(남은도구들, 남은광물들, 피로도) 반복 끝내는 조건 남은 도구가 없거나 || 남은 광물이 없을때 최종피로도를 리턴한다. 도구가 없을 시 = [0, 0, 0] 이고 도구의 갯수는 >= 0이니까 reduce를 썼다 if (picks.reduce((acc, .. 2023. 8. 22.
[프로그래머스lv2] 과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962# 1번째 풀이 1. plans의 start, playtime 시간문자열을 숫자로 변환한뒤, 그 시간에 따라 sort한다 2. 맨 처음 과제를 stack에 넣고 진행한다 3. 앞의 과제가 끝나는 시간 다음과제가 시작하는 시간이면, 앞의과제는 remained에 넣는다 (이때 playtime 남은 시간 = 앞 과제하는데 걸리는 시간 - (뒤 과제 시작시간 - 앞 과제시작시간) 으로 계산한다.) 5. 3번의 앞과제가 이미 다 끝났을때 remained남은과제가 남아있고 뒤 과제시작시간이 아직 안 됬을때 remained에서 뒤 과제를 빼서 stack에 넣고 뒤 과제를 마저진행한다. 6. 남은 과제를 .. 2023. 8. 11.
[프로그래머스] 덧칠하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫풀이 끝에서 끝사이 range를 구한뒤 롤러길이만큼 나눈뒤 총 칠한 횟수 = 몫 + 나머지가 있으면 +1 해줬다. function solution(n, m, section) { const range = section[section.length-1] - section[0] + 1; const division = Math.floor(range / m); const remain = range % m; return division + (remain ? 1 : 0); } 반례) 위 풀이는 처음 시작점부터 끝점까지 롤.. 2023. 8. 7.
[프로그래머스] 한 번만 등장한 문자 https://school.programmers.co.kr/learn/courses/30/lessons/120896 방법1 문자열.lastIndexOf() function solution(s) { const arr = []; for (const c of s) { if (s.indexOf(c) === s.lastIndexOf(c)) { arr.push(c); } } return arr.sort().join(''); } 방법2 function solution(s) { var answer = ''; const obj = {}; for (const element of s) { obj[element] = (obj[element] || 0) +1; } // 1번만 등장하는 문자만 솎아내기 const once = O.. 2023. 7. 27.