[Baekjoon] - 11단계 : 브루트 포스
1. 블랙잭
#include <stdio.h>
int main(){
int n,m;
scanf("%d %d",&n, &m);
int card[n+1];
for(int i=0;i<n;i++)
scanf("%d", &card[i]);
int sum = 0;
int max = 0;
for(int i=0;i<n-2;i++){
for(int j=i+1;j<n-1;j++){
for(int k=j+1;k<n;k++){
if(i==j || j==k) continue;
sum = card[i] + card[j] + card[k];
if(sum > m) continue;
if(max < sum) max = sum;
}
}
}
if(max > m) printf("%d",m);
else printf("%d",max);
}
2. 분해합
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int min = 1000001;
for(int i=n-1;i>=1;i--){
int num = i;
int sum = num;
while(num > 0){
sum += num%10;
num /= 10;
}
if(n == sum) min = i;
}
if(min == 1000001) printf("0");
else printf("%d",min);
}
3. 덩치
#include <stdio.h>
struct info{
int x[51];
int y[51];
};
int main(){
int t;
scanf("%d",&t);
struct info info;
int grade[51];
for(int i=0;i<t;i++){
scanf("%d %d",&info.x[i],&info.y[i]);
grade[i] = 1;
}
for(int i=0;i<t;i++){
for(int j=0;j<t;j++){
if(info.x[i] < info.x[j] && info.y[i] < info.y[j]){
grade[i]++;
}
}
}
for(int i=0;i<t;i++) printf("%d ",grade[i]);
}
4. 체스판 다시 칠하기
#include <stdio.h>
char board[50][50];
int check(int x, int y, int min){
int startW = 0;
int startB = 0;
for(int i=x;i<x+8;i++){
for(int j=y;j<y+8;j++){
if((i+j)%2 == 0){
if(board[i][j] == 'B') startW++;
else startB++;
}
else{
if(board[i][j] == 'B') startB++;
else startW++;
}
}
}
min = min > startW ? startW : min;
min = min > startB ? startB : min;
return min;
}
int main(){
int m,n;
int min = 100;
scanf("%d %d",&m, &n);
for(int i=0;i<m;i++){
scanf("%s", board[i]);
}
for(int i=0;i<m-7;i++){
for(int j=0;j<n-7;j++){
min = check(i,j,min);
}
}
printf("%d", min);
}
5. 영화감독 숌
#include <stdio.h>
int main(){
int n,i;
int temp = 0;
scanf("%d",&n);
int count = 1;
for(i=667;count!=n;i++){
temp = i;
while(temp > 0){
if(temp%1000 == 666){
count++;
break;
}
temp /= 10;
}
}
printf("%d",i-1);
}
요약
- 블랙잭 21!
- 무지성 분해합
- 체크메이트.
- 끝