2021/12/28 2

[프로그래머스 Level2] 타겟 넘버(JAVA)

문제 출처 - https://programmers.co.kr/learn/courses/30/lessons/43165?language=java 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 문제 풀이 주어진 n 제한이 20이하로 작은 수 이다. -> 완전탐색을 생각할 수 있다. '-' 인경우, '+' 인 경우 두 가지를 '선택' 하여 타겟 넘버를 만들 수 있다. 따라서 조합을 사용하여 모든 경우를 체크할 수 있다. 시간복잡도 O(2^20) 인덱스는 배열의..

프로그래머스 2021.12.28

"순열" + [백준] 10972 - 다음 순열(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net [문제 풀이 전] 순열의 정의 : 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다 (위키백과) 크기가 N인 수열이 서로 다른 순열은 총 N! 개가 있다. 모든 순열을 사전순으로 나열했을 때 A = { 1 , 2, 3 } 인 경우 사전 순은 다음과 같다. 1 2 3 = i 이면서 A[j] > A [i-1]을 만족하는 가장 큰 j를 찾는다. A[i-1] 보다 큰 수 중 가장 작은 수 A [j] = 4 ---> 7 2 3 6 5 4 1..

알고리즘 정리 2021.12.28