목록알고리즘/그리디&완탐 (21)
코딩공작소
https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr :: 시간 복잡도에 대해서 고려를 해보고 알고리즘을 설계하면 더 좋을 것 같다. 1234567891011121314151617181920212223242526272829303132import java.util.*; class Solution { public int solution(int[][] targets) { int answer = 1; Arrays.sort(targets, ((x,y) ->..
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 | 프로그래머스 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘 programmers.co.kr 완탐.. 흠 123456789101112131415161718192021..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다. 초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 www.acmicpc.net #완전탐색을 이용해 최소 값(단계)을 찾는 문제 : 원래는 if len==M : Return 방식으로 길이를 도달했을 때 종료를 해..
https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 9명의 난쟁이를 7명을 선택해서 키가 100인것을 찾아서 정렬후 출력하는 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include #include #include using namespace std; vector ..
https://www.acmicpc.net/problem/16985 16985번: Maaaaaaaaaze 첫째 줄부터 25줄에 걸쳐 판이 주어진다. 각 판은 5줄에 걸쳐 주어지며 각 줄에는 5개의 숫자가 빈칸을 사이에 두고 주어진다. 0은 참가자가 들어갈 수 없는 칸, 1은 참가자가 들어갈 수 있는 칸을 의미한다. www.acmicpc.net 완전탐색과 shift의 범벅... --> 순열로 층을 완전탐색해주고 5중 포문을 통해 각 층별로 회전을 시킨 경우 들을 모두 탐색한다. 평면 자체를 시계 혹은 반시계로 회전하는 법에 대해 새로운 방법을 알았다.... (시계방향) 원래 행렬의 1행 ~ 5행을 tmp에 5열~1열에 넣고 tmp를 원래 행렬에 넣어주면된다.. -->행과 열을 바꿔주면 된다. 그리고 이 문..
https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다. 1 2 3 2 1 1 4 5 6 배열은 회전 연산을 수행할 수 있다. 회전 연산은 세 정수 (r, c, s)로 이루어져 있고, 가장 왼쪽 윗 칸이 (r-s, c-s), 가장 오른쪽 아랫 칸이 (r+s, c+s)인 정사각형을 시계 www.acmicpc.net 순열 부분에서 삽집....을 한 경험이있다... 벡터로 사용해서 벡터의 원소로 접근해야되는데 ㅎ... 순열을 겉햝기 식으로 한..

순서를 하나씩 늘려가면서 완전탐색을 진행해야하는 경우, 끝점을 포문으로 돌려서 if절을 구현. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include #include using namespace std; struct INFO { bool isV = false; }; INFO info[5]; int isV[5]; vector v; //EndPoint를 늘려주면서 dfs탐색 void dfs(int s,int len,int ep) { if (len == ep) { for (int i = 0; i
Vector를 이용하느냐의 차이에 의해서 유사해보이지만 완전히 다른 방식으로 해서 완전히 시험에 털려버렸다..ㅋ 조합의 경우는 순서에 상관없이 전에 참조했던것을 참조하지 않고 선택만 하면 된다. 따라서 그냥 배열에 true표시만 해주고 1부터 N까지를 탐색하며 true를 골라주면 된다. *내가 실수했던건, 순열에서 똑같이 구현하고 시작점만 0으로해줬다는 것이다... 이런식으로 하면 사실 true가 새겨지는 과정은 순서가 존재하지만 1부터N까지 탐색하며 true를 고르기 때문에 아무의미X..* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #include usi..