728x90
반응형
문제 1. 블랙잭 (브론즈 2)
#include<iostream>
using namespace std;
int main(){
int n, m, sum, min, res = 0;
cin >> n >> m;
int* card = new int[n];
bool is_flag;
for (int i = 0; i < n; i++) {
cin >> card[i];
}
sum = 0;
min = m;
is_flag = true;
for (int i = 0; i < n - 1 && is_flag; i++) {
for (int j = i + 1; j < n && is_flag; j++) {
for (int k = j + 1; k < n && is_flag; k++) {
sum = card[i] + card[j] + card[k];
if (sum == m) is_flag = false;
if (min > m - sum && m >= sum) {
min = m - sum;
res = sum;
}
}
}
}
cout << res << endl;
return 0;
}
문제 2. 분해합 (브론즈 2)
#include <iostream>
#include <string>
#include <cmath>
#include <map>
using namespace std;
int func_2231_create_decompose(int a) {
int len, res = a;
len = to_string(a).length();
for (int i = len; a > 0; i--) {
res += a / pow(10, i);
a %= (int)pow(10, i);
}
return res;
}
int main() {
int a, key;
cin >> a;
map<int, int> m;
for (int i = 1; i < a; i++) {
key = func_2231_create_decompose(i);
if(!m[key])
m[key] = i;
}
cout << m[a];
return 0;
}
문제 3. 덩치 (실버 5)
/*
* 문제 내용 이해가 중요한 문제였음.
* map을 사용해서 구현한 버전
*/
#include <iostream>
#include <map>
using namespace std;
int main() {
int int_case;
int cnt, grade;
int* bulk;
cin >> int_case;
map<char, int *> m_input;
// 입력
for (int i = 0; i < int_case; i++) {
bulk = new int[2];
cin >> bulk[0] >> bulk[1];
m_input['a' + i] = bulk;
}
// 등수 : 나보다 덩치가 큰 사람의 수 + 1
for (int i = 0; i < int_case; i++) {
cnt = 1;
for (int j = 0; j < int_case; j++) {
// 덩치 : 키도 크고, 몸무게도 무거운 사람 수
if (m_input['a' + i][0] < m_input['a' + j][0] && m_input['a' + i][1] < m_input['a' + j][1]) {
cnt++;
}
}
// 등수 출력
cout << cnt << " ";
}
for (int i = 0; i < int_case; i++) {
delete m_input['a' + i];
}
return 0;
}
/*
* 문제 내용 이해가 중요한 문제였음.
* 2차원 Array를 사용해서 구현한 버전
*/
#include <iostream>
using namespace std;
int main() {
int int_case, cnt;
cin >> int_case;
int** arr = new int*[int_case];
int* bulk;
for (int i = 0; i < int_case; i++) {
bulk = new int[2];
cin >> bulk[0] >> bulk[1];
arr[i] = bulk;
}
for (int i = 0; i < int_case; i++) {
cnt = 1;
for (int j = 0; j < int_case; j++) {
if (arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1]) {
cnt++;
}
}
cout << cnt << " ";
}
return 0;
}
문제 4. 체스판 다시 칠하기 (실버 5)
#include <iostream>
#include <cstring>
using namespace std;
int func_1018_bitmask(char **_map) {
int cnt_1 = 0, cnt_2 = 0;
char filter_1[8][8] = {
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0}
};
char filter_2[8][8] = {
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 1, 0, 1, 0},
{0, 1, 0, 1, 0, 1, 0, 1}
};
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if ( !(_map[i][j]^filter_1[i][j]) ) {
cnt_1++;
}
if (!(_map[i][j] ^ filter_2[i][j])) {
cnt_2++;
}
}
}
if (cnt_1 >= cnt_2) return cnt_2;
else return cnt_1;
}
int main() {
int n, m;
int min, cnt;
string tmp;
cin >> n >> m;
char** tmp_map = new char* [8];
for (int i = 0; i < 8; i++) {
tmp_map[i] = new char[8];
}
char** bwmap = new char* [n];
for (int i = 0; i < n; i++) {
bwmap[i] = new char[m];
}
for (int i = 0; i < n; i++) {
cin >> tmp;
for (int j = 0; j < m; j++) {
if (tmp[j] == 'B') {
bwmap[i][j] = 1;
}
else {
bwmap[i][j] = 0;
}
}
}
cnt = 0;
min = 64;
for (int i = 0; i <= n - 8; i++) {
for (int j = 0; j <= m - 8; j++) {
for (int a = i, aa = 0; a < i + 8; a++, aa++) {
for (int b = j, bb = 0; b < j + 8; b++, bb++) {
tmp_map[aa][bb] = bwmap[a][b];
}
}
cnt = func_1018_bitmask(tmp_map);
if (cnt < min) {
min = cnt;
}
}
}
cout << min << "\n";
return 0;
}
문제 5. 영화감독 숌 (실버 5)
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int n, cnt=0;
string tmp;
cin >> n;
for (int i = 666; i < 2100000000; i++) {
tmp = to_string(i);
if (tmp.find("666") != string::npos) {
cnt++;
if (cnt > 10000) break;
if (cnt == n) {
cout << tmp << "\n";
}
}
}
}
결과
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기 > DFS와 BFS (c++) (0) | 2022.02.05 |
---|---|
[백준] 단계별로 풀어보기 > 정렬 (c++) (0) | 2022.01.30 |
[백준] 1011번 - Fly me to the Alpha Centauri (골드 5) (0) | 2022.01.29 |
[백준] 15965번 - K번째 소수 (실버 2) (0) | 2022.01.25 |
[백준] 단계별로 풀어보기 > 재귀 (c++) (0) | 2022.01.25 |
[백준] 단계별로 풀어보기 > 기본 수학 2 (c++) (0) | 2022.01.19 |
댓글