본문 바로가기
반응형

Algorithm/프로그래머스30

Level1. 프로그래머스 두 개 뽑아서 더하기 - JavaScript 접근 numbers array를 전달 받아 서로 다른 인덱스의 값 두개를 더해 만들 수 있는 수를 배열로 만들고 그 배열을 오름차순으로 정리하면 됩니다. 값을 더해 만들어진 수는 중복되면 안되는데 이때 자료구조 Set을 이용하면 쉽게 구현이 가능합니다. function solution(numbers) { const set = new Set(); for(let i=0; i 2020. 10. 20.
Level2. 프로그래머스 땅따먹기 - JavaScript 접근 처음에는 각 행에서 제일 큰 값만 취한다면 결국 제일 큰 값이 나올 것이다. 라고 생각했지만 이전 행에서 선택한 열은 이번 행에서 선택은 못하기 때문에 예외 사항이 생길 수 있다. 예를 들어 [ [1,2,3,4], [3,4,5,9], ] 다음과 같은 입력이 주어지고 각 행에서 제일 큰 값을 선택 한다고 했을 때 첫 번째 행에서 제일 큰 값 4를 선택하고 아래 행에서 같은 열인 9는 선택 못하고 그 다음 큰 값인 5를 선택해 9가 된다. 하지만 첫 번째 행에서 3을 선택하고 다음행에서 9를 선택한다면 최종값이 12가 된다. 따라서 다른 방법을 써야한다. 두 번째로 완전탐색을 생각해보았다. 구할 수 있는 모든 경우의 수에서 최종값이 가장 크다면 그게 정답일 것이다. 하지만 해당 문제의 N의 최대값은 1.. 2020. 7. 16.
Level2. 프로그래머스 다리를 지나는 트럭 - JavaScript 접근 이번 문제는 신경써야할 부분이 많았고 처음에 읽을 때 바로 이해가 되지 않았다. 결론적으로 다리가 수용할 수 있는 무게와 트럭이 어디에 위치해 있는지 등을 신경 써주어야 한다. 그래야 다음 트럭이 언제 다리에 진입할 수 있는지 알 수 있다. 대략적인 흐름은 아래와 같다. 다리에 있는 트럭을 한 칸씩 앞으로 이동한다. 현재 다리에 있는 트럭들의 무게와 대기 중인 트럭 무게의 합이 수용 가능한 다리의 무게 보다 작거나 같다면 대기 중인 트럭 진입 아니라면 진입 안함 function solution(bridge_length, weight, truck_weights) { var answer = 0, truckOnTheBridge = {},finishedTruck=0; let idx = 0, curWeigh.. 2020. 7. 11.
Level2. 프로그래머스 [3차] 파일명 정렬 - JavaScript 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. 파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다. 버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. 예컨대 파일 목록이 [img12.png, img10.png, img2.png, img1.png]일 경우, 일반적인 정렬은 [img1.png, img10.png, img12.png, img2.png] 순이 되지만, 숫자 순으로 정렬된 [img1.png, im.. 2020. 7. 10.