
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 백트래킹 C++ 백트래킹의 고전 문제 N-Queen 문제이다. 아무리 그래도 규칙 설명 한 줄이 없다. 접근방법 알고리즘 수업 때 배운 로직을 사용했다. 각 행에 퀸이 놓여있는 열 인덱스를 담은 col 배열을 전역변수로 선언해두고 한 행 안에서 각 열에 대한 반복문을 돌면서 퀸을 놓고 함수를 재귀 호출한 뒤 다시 퀸을 거두면서 백트래킹을 구현했다. promising을 함수 초반에 호출하여 검사하는게 직관적으로 와..

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 백트래킹 C++ 삼성 SW 역량 테스트 기출 문제 1 문제 순서가 정해진 피연산자들이 주어지고 +,-,x,÷ 의 개수가 입력된다. 그럼 연산자들의 순서를 바꿔가며 계산한 값의 최댓값과 최솟값을 출력하는 문제이다. 접근방법 순서가 다르게 연산자들을 나열한다. N과 M(1)의 코드를 재사용했다. 그 결과 연산자들의 순서가 다른 모든 경우의 ..

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 백트래킹 C++ 삼성 SW 역량 테스트 기출 문제 2 접근방법 팀선정에 N과 M(2)에서 사용했던 코드 재사용했다.(조합) 근데 보수관계의 조합은 필요없어서 첫번째로 들어오는 수가 0인 조합만 조사했다. ischeck배열로 1이면 스타트팀, 0이면 링크팀에 넣고 또 스타트팀의 능력치 합산 점수, 링크팀의 능력치 합산 점수를 구한다. 그리고 이들의 차이는 gap변수(전역변수)에 저장하면서 최솟값을 갱신한다. f함수 끝낸..

https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 C++ 4는 2와 3을 합친 문제이다. 수열 내의 중복을 허용하고, 오름차순이다 2에서 사용했던 if문을 사용하고, 중복을 허용하기 때문에 반복여부를 체크하는 ischeck배열도 사용하지 않는다. 다만 중복을 허용하는 오름차순이기 때문에 for문 제어변수 i의 초기값을 result배열의 가장 최근 값부터 N까지로 한다.(=) 소스코드 // // 15652.cpp // back track..

https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 C++ 이게 순열이네 1은 순열은 아니다. 수열 내의 중복이 허용되지 않았다 이 코드가 제일 간단했다. 그냥 반복문돌면서 result에 넣어서 출력하면 끝 // // 15651.cpp // back tracking // // Created by 임수정 on 2020/07/08. // Copyright © 2020 임수정. All rights reserved. // #include usi..

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 c++ N과 M(1) 문제의 연장선이다. 1은 순열이었고 2는 오름차순이라는 조건을 줘서 조합이다. 그래서 반복문을 0부터 N-1까지가 아니라 result 배열의 가장 최근의 수 부터 N-1까지 반복한다. (실제로 입력하는 수는 배열의 가장 최근의 수 보다 크고, N보다 작거나 같은 수이다. ) 이때 cnt가 0인 경우는 따로 처리해준다. result[-1]ㄸㅐ문 더 좋은 방법이 있을 ..

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 c++ 백트래킹 -> 순열 ischeck배열 써서 방문했는지 저장하고 인덱스는 cnt로 제어 f함수 재귀 cnt가 M까지 가면 재귀 종료 소스코드 // // main.cpp // back tracking // // Created by 임수정 on 2020/07/07. // Copyright © 2020 임수정. All rights reserved. // #include using nam..
- Total
- Today
- Yesterday
- 가장 큰 수 프로그래머스
- 최소힙
- 토마토
- dp
- 최단경로
- 백트래킹
- c++
- 투포인터
- 브루트포스
- 백준
- 그리디알고리즘
- 웹크롤링
- 정렬
- BFS
- 트리
- 게임이론
- dfs
- Swift
- 스택
- 동적계획법
- 알고리즘
- 최대힙
- 가장 큰 수 Swift
- 자바
- 수학
- 다이나믹프로그래밍
- 우선순위큐
- 프로그래머스
- 이분탐색
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |