분류 전체보기 229

프로그래머스 > 과일 장수(JS)

score라는 과일을 모아놓고, m 사과 상자를 만들어 판매했을 때, 최대이익을 얻을 수 있도록 반환해야 한다. 상자에서 가장 값싼 값의 사과를 m 만큼 곱해서 과일 장수가 얻을 수 있는 최대 이익을 반환해야 한다. 여기서 k의 역할은 그렇게 중요하지 않아 보인다. 왜냐면 값싼 사과를 순서대로 사과박스에 담고, m의 사이즈보다 작다면 이전까지 만든 사과박스를 반환하고, 그렇지 않다면, 해당 박스에 최하위의 사과를 m만큼 곱해서 반환하면 되기 때문에, k를 활용하지 못했다. function solution(k, m, score) { let count = 0; const expensiveAppleSort = score.sort((a, b) => b - a); let secondSlice = m; let fi..

알고리즘문제 2022.12.01

프로그래머스 > 콜라문제(JS)

처음 문제에 접근했을 때는, 콜라를 나눈 값을 변수에 담고, 해당 변수를 a로 바꿔가면서 count에 나눈 값 * b를 할당했지만 실패.. 생각해보니 슈퍼에서 바꾼 콜라도 내가 먹고 또 바꿀 수 있는 부분을 빼먹었다. 그래서 coke에 기존에 coke - 가게에 판 콜라 + 가게에서 얻은 콜라를 넣고 while 반복문을 통해 결과에 도달했다. function solution(a, b, n) { let count = 0; let coke = n; while (coke >= a) { let changeCoke = Math.floor(coke / a); count += changeCoke * b; coke = coke - changeCoke * a + changeCoke * b; } return count; }

알고리즘문제 2022.11.30

벡터에 대해서

벡터(vector) 힘의 방향과 크기를 나타낸다. 화살표의 길이로 길면 빠른 것, 짧으면 느린 것 크기에 방향성을 함께 고려 예 : 중력 프로그래밍에서 벡터를 표현하는 방법 크기와 방향이니까 스칼라 2개 즉, 기본형 변수 2개로 표현 가능 public class Vector { public double Angle { get; set; } public double Megnitude { get; set; } } (각도, 크기)표현법의 한계 예를 들어 벽에 반사돼서 튕겨 나오는 공은 어떻게 계산할까..? 이런 경우 '성분 표기법'을 사용하면 훨씬 편하게 가능하다. 벡터 성분으로 길이, 각도 구하기 벡터는 사분면 어디에든 존재한다. 단, 개념 상 시작은 언제나(0, 0)부터 벡터의 연산 단위(unit) 벡터 길..

프로그래머스 > [1차]캐시(JS)

1. 이 문제는 이해가 안되서 다른 사람이 푼 풀이를 바탕으로 이해하면서 다시 풀었다. 2. 핵심은 큐와 스택으로 문제를 풀었어야 했다. function solution(cacheSize, cities) { let count = 0 ; let cityArray = []; cities.forEach((el) => { let currentCity = el.toLowerCase(); // 소문자로 통일 let isFindCity = cityArray.find((city) => city === currentCity); //새로운 배열인 cityArray에 해당 city가 있는지 판단 if (!isFindCity) { cityArray.push(currentCity); if (cityArray.length > c..

알고리즘문제 2022.11.13

파일시스템

파일과 디렉터리 파일 : 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합 모든 파일에는 이름과 파일을 실행하기 위한 정보, 파일 관련 부가 정보가 존재 해당 부가정보들을 속성 또는 메타데이터라고 부른다. 파일 속성과 유형 속성 이름 의미 유형 운영체제가 인지하는 파일의 종류를 나타낸다. 크기 파일의 현재 크기와 허용 가능한 최대 크기를 나타낸다. 보호 어떤 사용자가 해당 파일을 읽고, 쓰고, 실행할 수 있는지를 나타낸다. 생성 날짜 파일이 생성된 날짜를 나타낸다. 마지막 접근 날짜 파일에 마지막으로 접근한 날짜를 나타낸다. 마지막 수정 날짜 파일이 마지막으로 수정된 날짜를 나타낸다. 생성자 파일을 생성한 사용자를 나타낸다. 소유자 파일을 소유한 사용자를 나타낸다. 위치 파일의 보조기..

프로그래머스 > 괄호 회전하기(JavaScript)

function solution(s) { if (s.length % 2 === 1) { //만약 처음부터 홀수면 될 수 없기 때문에 엣지케이스는 0으로 반환 return 0; } let count = 0; const firstBracket = "({["; for (let i = 0; i < s.length; i++) { const arr = s.slice(i) + s.slice(0, i); //처음 문자열을 맨 끝으로 const stack = []; let flag = true; for (let key of arr) { if (firstBracket.includes(key)) { stack.push(key); } else { const bracket = stack.pop(); if (key === ")"..

카테고리 없음 2022.11.08

[JS]프로그래머스 - 멀리 뛰기

1. 문제를 봤을 때 피보나치 수열이란 생각이 들었다. 그래서 피보나치수열로 처음에 실행했을 때, 시간초과가 발생 2. 그래서 for문을 통해 O(n)으로 시간복잡도를 바꿔서 진행했다. 하지만 newArray[n] % 1234567로 했을 때 실패가 발생했다. 3. 그래서 피보나치를 통해 newArray에 push할 때 나눠서 넣어줬더니 성공 function solution(n) { function fibonacci(n) { const newArray = [0, 1, 2]; for (let i = 3; i

알고리즘문제 2022.11.07

프로그래머스 > 튜플

function solution(s) { const tempArray = []; const takeOutString = ['{', '}', ',']; //숫자만 찾아주기 위해서 빼야할 {, }, , 각 문자열을 변수명에 배열로 만들어줬다. let tempString = ''; for (let i = 0; i < s.length; i++) { if (takeOutString.includes(s[i]) && tempString) { tempArray.push(tempString); tempString = ''; } if (!takeOutString.includes(s[i])) { tempString += s[i]; } } const tupleObject = {}; tempArray.forEach((el) =..

알고리즘문제 2022.11.04

프로그래머스 > 프린터

function solution(priorities, location) { const answer = []; const waitList = priorities.map((x, i) => [x, i]); //i를 통해 location위치를 반환시켜주기 위해 배열로 만들어준다. while (waitList.length) { const front = waitList.shift(); //큐처럼 앞에서 빼준다. if (front[0] >= Math.max(...waitList.map(x => x[0]))) { //만약 Math.max로 큰 숫자보다 큰게 있다면 answer에 담아준다. front[1]을 넣어주는 이유는 //index는 여기서 고유하게 쓰일 수 있다. answer.push(front[1]); if (..

알고리즘문제 2022.11.02
반응형