문제 링크 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 문제 유형 브루트포스 - 순열 문제 풀이 처음에 모든 순열을 차례로 다 구해서 나열하여 입력값의 순열의 다음 순열을 찾는 방식을 생각했다. 그러나, 순열은 최대 10,000개의 연속된 수로 있기에 시간초과가 날 것 같아서 다른 방법을 찾아야했다. 방법이 생각나지 않아 검색을 했다. C++에는 algorithm 헤더 파일을 넣고, 헤더 파일 내의 next_permutation 함수를 사용하면 현재 순열의 다음 순열을 구할 수 있다고 한다. JS에는 이런 내장 함수가 없기에, 직접 구현하여야 한다. 입력값으로 들어온..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 정렬 (Lv.1) 문제 풀이 sort 메소드 파라미터로 compareFunction을 삽입해 정렬 순서를 정의했다. compareFunction (a, b가 비교되는 두 요소일때) compareFunction(a, b)의 반환값 0: b의 인덱스가 a의 인덱스보다 작도록 정렬한다. 문제에서 인덱스 n의 문자가 같을 경우에는 사전..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 유형 재귀 (Lv.2) 문제 풀이 자연수 N이 있을 때, N에서 2의 제곱인 수 중에서 N보다 작거나 같은 가장 큰 수를 뺀다. 이때, 2의 제곱의 지수에 해당하는 자리는 1이 된다. 재귀적으로 getBinaryLength 함수를 호출하여 2진수를 구하고, 2진수 중 1의 개수를 리턴한다. 자연수 N+1부터 반복하여 N의 2진수의 1의 개수와 같은 자연수를 찾는다. 코드 function solution(n) { // n의 최대 지수가 최대 인덱스 번호인 배열을 만든다. let arr = new..