728x90
반응형

알고리즘 154

[백준/구현/백트래킹/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++] 14500번 테트로미노

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 문제 해결 방법 이 문제는 T모양과 나머지 모양을 따로 구현했다. 각 모양마다 구한 코드도 있었는데 나는 두가지 방법으로만 구현했다. 1. T제외 4가지 모양 구하기 (make() 함수) 이건 백트래킹을 사용해서 구현했다. 상하좌우를 탐색하며 범위가 넘어갔을때는 제외하고 4칸째일때 4수의 합과 최대값을 비교한다 // x좌표, y좌표, 칸들의 합, 몇번째 방문한 칸인지 void make(int x,..

[백준/백트래킹/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++] 17425번 약수의 합

https://www.acmicpc.net/problem/17425 17425번: 약수의 합 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net #include using namespace std; long long int f[1000001] = {0,}; long long int g[1000001] = {0,}; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n=1000000; int j = 1; for (int i = 1; i

[백준/수학/C++] 17427번 약수의 합 2

https://www.acmicpc.net/problem/17427 17427번: 약수의 합 2 두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더 www.acmicpc.net #include using namespace std; long long int f[1000001] = {0,}; long long int g[1000001] = {0,}; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int j=1; for (int i = 1..

[백준/수학/C++] 1037번 약수

https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; vector v; cin >> n; for(int i=0; i> x; v.push_back(x); } sort(v.begin(), v.end()); if(v.size()==1) cout

[백준/완전탐색/C++] 4375번 1 *

https://www.acmicpc.net/problem/4375 4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 테스트케이스 숫자 대신 입력이 종료될 때까지 입력받는 방법 while(cin>>n){ } (A+B)%C = (A%C + B%C)%C 사용 #include using namespace std; int n; int result; int main(){ while(cin >> n){ int ans = 1; result = 1; while(1){ if(ans % n == 0) break; else { result++; ans = ans*10 + 1; ans %= n..

[백준/백트래킹/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..

728x90
반응형