알고리즘

나의 풀이 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)..
나의 풀이 문제의 난이도보다 문제를 풀다 실수를 했는데 그것 때문에 시간을 너무 많이 잡아먹었다. 평소에는 처음 풀때는 좋은 변수명이 생각나지않아 대충 변수명을 하고 코테문제를 풀고 문제를 다시 리팩터링하면서 변수명을 고친다. 하지만 오늘 이렇게 하다가 변수명이 중복이 되어서 맞게 풀었는데 계속 틀린답이 나왔다. for문을 작성할때 조건문에 var가아닌 let으로 선언하면 지역변수가 되기때문에 외부에 있는 변수와 같은이름을 할수있는데 이부분에서 문제가 발생하였다. 이제 처음 문제풀때부터 변수명을 고민하고 제대로 작성하자 1. 풀이 딱 보고 아 for문과 slice를 사용해서 10일단위로 끊으면서 want 제품과 할인 제품을 비교하면 될 것 같다 생각했다. 1) want 와 number을 하나의 객체로 만..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 이 문제를 3번째 풀면서 복습하고 있다 매번 풀때마다 풀이가 바뀐다는게 신기하다. 풀이 1 function solution(progresses, speeds) { let countBox = []; let completeBox = []; for (k = 1; k < 100; k++) { let complete = []; for (i = 0; i < progresses.length; i++) { if (typeof progresses[i] == 'number') progresses[i] += speed..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 상당히 어려웠다. 커서 왼쪽이동이 없으면 쉬운데 왼쪽이동 때문에 생각해야될 부분이 많다. 나는 두 부분으로 나누었다. 1. 알파벳을 수정하는 위 or 아래 조작의 최소값을 각 문자마다 구한다. 2. 알파벳을 수정하기위해 현재 커서 위치를 이동 해야하는데 이때 왼쪽 or 오른쪽 조작의 최단경로를 구한다. 1번 + 2번을 하면 답이나온다 . 1. name에서 각 문자별로 최소한의 조이스틱 조작 const getCharMin = () => { const first = 65; const last = 90 ..
나의 풀이 아 이거 스택문제이구나 싶어서 바로 풀었는데 처음에는 시간초과가 났다. 배열의 크기가 1,00,000이하이기 때문에 가독성 조금 더 좋은 forEach로 충분히 커버가능할 것 같았지만 결과는 시간초과 그래서 결국 아래처럼 for문으로 바꾸고 나니 통과 여기서 의문이 들었다. for과 forEach의 속도 차이가 그렇게 크지 않기 때문에 크기 1,000,000정도는 간단한코드이기에 괜찮을 것 같았는데 이런결과가 나오다니 내가 둘의 차이를 제대로 모르는 것 같았다. 그래서 아래와 같은 글을 작성했다. https://html-jc.tistory.com/648 [JS] for vs forEach 코딩테스트 문제를 풀다가 간단한 코드인데 for문으로 하면 통과인데 forEach문으로 하면 실패하는 문제..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 틀린 풀이 너무 단순하게 생각하고 풀었다. // 잘못된 풀이 // 예제는 통과하지만 필요없는 구역도 칠해버림 function solution(n, m, section) { // 1. early return 먼저 제거 // 1) 롤러의 길이가 1이면 result = n 이 된다. if (m === 1) return n; // 2. 나머지 경우 // 1) section에서 첫 번째 index와 마지막 index의 숫자를 가져온다. const firstIndexNum = section[0]; const ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 문자열 다루기 문제이다. 생각의 과정 1. name 와 yearning로 객체를 만든뒤 2. 이중 배열로 되어있는 photo를 reduce를 통해 result 배열을 만들자. // 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/176963?language=javascript function solution(name, yearning, photo) { // 생각 // name + yearning 객체로 만들어서 계속 활용 const l..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 역시 프로그래머스는 계속 새로운 문제가 나와서 좋다. level.1을 다 풀었지만 새로 문제가 추가되어서 풀어봤다. 나의 풀이 function solution(t, p) { const pLength = p.length const substrings = [...t].reduce((acc,cur,i,arr) => { if(i +value { if(i
나의 풀이 풀이 1은 한쪽 전선의 개수를 구했다. (아직 미해결) 왜냐하면 전선 개수 + 1 = 송전탑 개수가 되기 때문이다. 풀이 2는 송전탑의 개수를 구해서 문제를 풀었다. 풀이 1 틀린 풀이 function solution(n, wires) { wires.sort(([a,_], [b,__]) => a-b) let answer = n function tracking(n, wires, wireCopy, index) { if(index + 1 > wires.length) return wireCopy.splice(index, 1) const firstLine = wireCopy.reduce((acc, cur,i) => { if(i === 0){ acc.push(cur) return acc } if(acc...
개발자성장기
'알고리즘' 카테고리의 글 목록 (4 Page)