728x90
반응형

알고리즘/백트래킹 8

[백준/구현/백트래킹/C++] 14502번 연구소 (삼성 코딩테스트 기출)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 해결 방법 문제는 크게 벽 세우기 -> 바이러스 퍼트리기 -> 안전영역 크기 구하기 이렇게 풀 수 있다. 처음에 입력을 받을 때 바이러스의 위치는 벡터 virus에, 빈칸 위치는 벡터 v_empty에 담았다. void input(){ cin >> n >> m; for(int i=0; i x; MAP[i][j] = x; if(x == 2) virus.push_back({i,j}); if(x == 0) v_..

[백준/구현/백트래킹/C++] 15686번 치킨배달 (삼성 SW 역량 테스트 기출)

https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제 해결 방법 처음에 도시의 정보를 입력받을 때 1일때는 vector h에, 2일때는 vector ch에 좌표를 넣어준다 if(x==1) h.push_back({i,j}); // 집인 경우 else if(x==2) ch.push_back({i,j}); // 치킨집인 경우 그리고 전체 치킨집의 수와 m을 비교하여 조건을 나눠서 구현했다 1. 치킨집의 수가 m보다 클때 ( 전체..

[백준/구현/백트래킹/C++] 1759번 암호 만들기

https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 문제 해결 방법 1. 입력받은 문자들을 정렬한다 2. 이전 인덱스를 저장해서 다음 인덱스를 고를수 있게한다 3. 자음의 수와 모음의 수 저장한다 자음과 모음의 구별은 위 사진처럼 생각해서 아래 코드처럼 구현했다. 모음인 경우 m+1, 자음인 경우 j+1 int diff = alpha[i]-'a'; if(diff==0 || diff==4 || diff==8 || diff==14 || diff==20) /..

[백준/백트래킹/C++] 15661번 링크와 스타트 *

https://www.acmicpc.net/problem/15661 15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net 계속 시간초과가 떠서 찾아봤는데 팀을 구성할 때 스타트팀 : 1,2 링크팀 : 3,4 일때와 스타트팀 : 3,4 링크팀 : 1,2 일때 두번 구해져서 그런 것이었다 void makeTeam(int tot){ if(tot == n){ compare(); return; } isStartTeam[tot] = true; // tot번의 선수가 start팀에 있..

[백준/백트래킹/C++] 14888번 연산자 끼워넣기 (삼성 SW 역량 테스트 기출)

문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon) www.acmicpc.net 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제풀이 방법 1. 더하기, 빼기, 곱하기, 나누기를 각각 1, 2, 3, 4 로 지정하여 구별한다 2. n-1개의 연산으로 수열을 만든다 3. 계산 (처음에 음수는 생각을 못하고 maxVal = 0으로 초기화했더니 틀렸다,, 넓게 생각하기!!) input() 함수 설명 void input(){ cin >> n; for..

[백준/백트래킹/C++] 14889번 스타트와 링크 (삼성 SW 역량 테스트 기출)

문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon) www.acmicpc.net 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net #include #include using namespace std; int ss[21][21]; int n; bool isused[21]; int result = 2e9; void count(){ vector s, l; int stot = 0, ltot = 0; for(int i=1; i

[백준/백트래킹/C++] 퇴사 (삼성 SW 역량 테스트 기출)

문제집: 삼성 SW 역량 테스트 기출 문제 (baekjoon) www.acmicpc.net 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net #include #include using namespace std; int n; vector t, p; int result = 0; void work(int k, int tot){ // k일에 일 시작함, total 금액 int day = k + t[k]; // 다음 일할 수 있는 날 if(tot > result && day = n) return; for(int i=day; i> n; for(int i=0; i> x >> y; t.push_back(x); p.push_back(y); } for(int i=0; i

728x90
반응형