문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이수학적으로 접근식을 생각하며 괜찬은 문제이다. 이 문제의 답은 결국 탑승 가능한 마지막 시간을 출력해야하기 때문에 대기 인원과 현재 시간을 중점으로 생각하면 점화식이 나오게된다. 시간을 오름차순으로 정렬했으며 각 시간마다 승객들을 탑승가능 인원수 만큼 shift() 해주었으며, 마지막 타임에 대기 인원의 유무와 대기 인원이 온 시간을 종합하여 답을 도출했다. 코드function solution(n, t, m, timetable) { const arriveTimes = Array.from({ length..
코테준비
문제https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이입력을로 받은 배열에 저장되어 있는 숫자들을 2진수로 변환한 뒤, 자릿수를 맞춰주고 OR 연산을 이용해 벽의 구현을 진행해준다. 코드const solution = (n, arr1, arr2) => { arr1 = arr1.map(e => { let binary = e.toString(2); const len = binary.length; for (let i = 0; i {..
문제https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이각 영단어를 배열에 넣은 뒤 영단어를 기준으로 split 메서드를 이용해 문자열을 나눈다. 이렇게 나누어진 문자열을 join 메서드를 이용해 숫자(문자열이 배열에서 갖고 있는 인덱스)로 다시 연결해준다. 코드const solution = (s) => { const arr = [ "zero", "one", "two", "three", "four", "five"..
문제https://www.acmicpc.net/problem/5972 풀이다익스트라다와 BFS 알고리즘을 이용한 문제이며, 필자는 큐를 이용한 풀이를 진행했다. 1번부터 시작하며 큐에 시작하는 위치를 저장하고 순회를 시작한다. 순회하며 각 지점에 도달하기 까지의 최소 비용을 측정한다. 최단 거리의 경우 st 지점부터 ed 지점까지 소요되는 비용을 더하며 최소 비용을 구한다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e);const [n, m] = input.shi..
문제https://www.acmicpc.net/problem/9655 풀이이 문제는 수학적으로 접근했다. 문제에서 나오는 두 인물은 오직 1개 혹은 3개만 가져갈 수 있으며, 주어지는 돌의 갯수에 따라 승자가 결정된다.홀수의 경우 먼저 돌을 가져간 사람이 이기며, 짝수의 경우 나중에 돌을 가져간 사람이 이기게 된다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n').map(e => e);const n = input.shift();console.log(n % 2 === 1 ? 'SK' :..
문제https://www.acmicpc.net/problem/2493 풀이이 문제를 처음 풀때는 순회 방식을 이용해 풀이했지만, 시간초과가 발생했다. 이 문제를 풀려면 스택 알고리즘을 이용해야 한다. 스택에 차례대로 타워들을 넣어야 하는데, 이때 기존 스택 마지막에 있던 타워보다 작은 타워는 스택에 들어가지 않고 바로 수신을 받는(스택에 있는 타워) 위치 번호를 답으로 저장한다. 만약 현재 타워가 더 크다면 기존에 있던 타워들 중 현재 타워보다 작은 타워들을 모두 pop해준다. 이때 중의해야할 것은 현재 타워보다 작은 타워들만 없애줘야한다. 이유는 다음에 올 타워들 중 현재 타워보다는 크고 기존 스택의 타워보다 작은 타워가 올 수 있기 때문이다. 코드const input = require('fs') ...