문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.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://www.acmicpc.net/problem/2493 풀이이 문제를 처음 풀때는 순회 방식을 이용해 풀이했지만, 시간초과가 발생했다. 이 문제를 풀려면 스택 알고리즘을 이용해야 한다. 스택에 차례대로 타워들을 넣어야 하는데, 이때 기존 스택 마지막에 있던 타워보다 작은 타워는 스택에 들어가지 않고 바로 수신을 받는(스택에 있는 타워) 위치 번호를 답으로 저장한다. 만약 현재 타워가 더 크다면 기존에 있던 타워들 중 현재 타워보다 작은 타워들을 모두 pop해준다. 이때 중의해야할 것은 현재 타워보다 작은 타워들만 없애줘야한다. 이유는 다음에 올 타워들 중 현재 타워보다는 크고 기존 스택의 타워보다 작은 타워가 올 수 있기 때문이다. 코드const input = require('fs') ...
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제와 같이 큰 범위내에서 특정 조건을 만족하는 최소값 혹은 최대값을 찾는 탐색 문제의 경우 완전 탐색을 진행하면 시간초과가 발생할 수 있기에 이분탐색 알고리즘을 이용해 풀이해야 한다. 사실 이 문제는 이분탐색 알고리즘만 잘 구현하면 어려운 부분은 없다. 그나마 문제를 틀렸을 경우 시간을 더해주는 로직 구현에 시경을 써야 한다는 점 빼면 그렇게 어려운 문제는 아닌것같다. 코드const solution = (diffs, times, limit) => { let [lp, rp] = [1, diffs.r..
문제https://school.programmers.co.kr/learn/courses/30/lessons/160585 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이번 문제는 조건만 잘 찾아내면 간단한 구현 문제이다. 이 문제에서 답이 1이 나오는 경우는 다음과 같다.O의 개수가 X의 수 보다 1 크며 O 빙고가 X 빙고 보다 많을 때, O의 개수가 X 개수와 같고 X 빙고가 더 많을 때, O 빙고와 X 빙고의 수가 0이고 O의 수가 X 보다 1클 때 이다. 중의해야할 점은 직선 뿐만 아니라 대각선으로도 빙고가 완성될 수 있으며, 틱택토 게임은 이기..
문제https://school.programmers.co.kr/learn/courses/30/lessons/131130# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제는 중복 확인이 중요 로직이다. 필자는 중복 확인 속도가 빠른 Set 객체를 이용하지 않고 배열을 사용했는데, 첫 번째 이유는 저장되는 데이터의 양이 적기 때문이고, 두 번째 이유로는 나중에 각 데이터의 길이를 구할 때 배열을 이용하는 것이 더 편하기 때문이다. 문제를 풀며 조심해야하는 부분은 이미 결과 배열에 중복되는 데이터가 있으면 braek문을 사용하지말고, continue문을..