문제https://www.acmicpc.net/problem/14889 풀이이 문제는 완전탐색과 DFS를 이용해 팀원의 조합을 구한 뒤 각 팀원의 조합의 점수 총합을 구한 뒤 양 팀의 점수 차 중 최소 값을 구하는 문제이다. 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n')const N = +input.shift();let arr = input.map(e => e.split(' ').map(Number));let answer = Infinity;let visited = new Array(..
코딩 테스트
문제 설명 https://www.acmicpc.net/problem/14501문제 풀이 방법이 문제는 DP를 이용한 풀이와 DFS를 이용한 재귀 함수로의 풀이가 가능한 문제이다.처음 이 문제를 봤을 때는 조합을 이용해 최대로 받을 수 있는 급여를 뽑아낸다 였지만, 이 문제에서 원하는 것은 근무일 수 혹은 상담 시간의 조합이 아니라 받을 총 급여의 최대값이라 DP를 이용해 풀었다. 나는 DP를 이용해 풀이를 진행해보았다. 최근 풀었던 가장 긴 바이토닉 부분 수열 문제에서 아이디어를 얻었다. 스케줄을 순회하며 급여를 체크하는 방향으로 설계했다. 이 문제에서는 주어진 스케줄의 역순으로 순회하며 값을 구했다.문제에서 처음 상담을 시작한 날짜에 따라 받게되는 급여의 최대값이 달라지기 때문이다. 정답 코드const..
문제https://www.acmicpc.net/problem/11054풀이이번 문제는 DP를 이용한 LIS 알고리즘 문제이다.처음 이 문제를 보고 바이토닉 수열이라는 개념에 대해 이해하기 쉽지 않았다... 각 자리수에서 좌/우로 증가, 감소하는 수들의 개수의 최대값을 구하는 문제이다. 좌에서 우로 이동하며 증가하는 수의 연속과 우에서 좌로 이동하며 증가하는 수의 연속을 측정한다. 이 두가지 과정의 결과를 이용해 바이토닉 수열의 최대값을 구할 수 있다. 각 과정에서 나온 증가되는 수의 개수는 dp1, dp2에 담기며, 두 배열에서 인덱스가 같은 값들을 더해주고, 이 중 최대 값을 제출한다. 코드const input = require('fs') .readFileSync(process.platform ===..
문제 설명https://www.acmicpc.net/problem/13414문제 풀이 방법이번 문제는 중복 처리 알고리즘 문제이다. 원래는 객체 리터럴을 이용해 인덱스를 저장해 풀이를 진행했지만, 케이스가 길어지면 시간 초과 에러가 발생할 수 있다 생각했다. 그래서 Set 객체를 이용해 다시 풀어봤다. Set은 먼저 나온 요소만 저장하기 때문에 원본 요소의 뒤에 나온 중복 요소를 순서대로 처리할 수 있다.정답 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n')const [N, L] = in..
문제 설명https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 풀이 방법이번에 다시 풀어본 문제는 시간 복잡도 최적화가 중요한 문제이다. const solution = (numbers) => { let answer = new Array(numbers.length).fill(-1); for(let i = 0; i numbers[i]){ answer[i] = numbers[j]; ..
문제 설명 https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 문제 풀이 방법 이 문제는 기본적으로 완전탐색 알고리즘의 일종인 브루트포스 문제이다. 각 기준 높이에 맞는 시간과 최대 높이를 측정하여 정답을 도출한다. 블럭의 최대 높이는 256까지 이므로 반복문을 이용해 0부터 256까지의 기준 높이를 설정하며 각 블럭에서의 기준 높이까지 맞추기위해 필요한 제거 횟수와 채움 횟수를 측정, 제거한 블럭과 기존에 갖고있던 블럭의 수가 넣어야 하는 블럭..