| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- presigned url
- spring websocket nginx 설정
- Flask
- 스프링부트
- logout
- S3
- 도메인 주도 개발
- springboot
- wss 연결 실패
- @Valid
- CustomException
- validation
- 백준 10815 # 백준 Java
- 예외 처리
- GoormIDE
- oauth2.0
- 자바 orm
- 패러다임 불일치
- AWS
- 소셜 로그인
- 이미지 업로드
- OpenAI API
- spring boot
- 개발 프로젝트
- fastapi
- ec2 nginx websocket reverse proxy
- session
- 구글 로그인
- 관점 지향 프로그래밍
- jwt
Archives
- Today
- Total
개발세발은 안되요
[C++] BJO 1101 : 카드 정리1 본문
문제
https://www.acmicpc.net/problem/1101
풀이
1. n개의 상자 중 조커 상자를 하나 선택한다. (반복문 이용하여 조커 상자를 n번 선택)
2. 조커 상자를 제외하고 나머지 상자를 조사한다.
a. 만약 해당 상자에 카드의 종류가 하나뿐이면서, 동시에 해당 카드의 종류가 선점되지 않았다면 카드의 이동은 필요없다.
b. 만약 해당 상자에 카드가 여러 종류이거나 또는 이미 다른 상자에서 선점된 카드만 들어 있다면 카드의 이동이 필요하다.
3. 최소 count 값을 출력한다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n,m, ans = 100000000;
int box[51][51]; // 처음 상자 정보 : i번 상자에 j번 색 카드가 몇 장 들어있다
int main() {
cin >> n >> m;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> box[i][j];
}
}
// 조커 상자 정하기
for(int cur = 0; cur<n; cur++){
int cal = 0;
int visited[m] = {0};
for(int i = 0; i<n; i++){
if(i == cur) continue;
// 현재 상자의 종류 구분하기
int color = -1;
int t = 1; // 0 이면 옮겨야 함. 1이면 안 옮겨도 됨.
for(int j=0; j<m; j++){
if(box[i][j] != 0 && color == -1){
color = j;
}
else if(box[i][j] != 0 && color != -1){
t = 0;
break;
}
}
if(color == -1) continue;
if(t == 0 || visited[color] != 0){
cal++;
}
else if(t == 1 && visited[color] == 0){
visited[color] = 1;
}
}
ans = min(ans, cal);
}
cout << ans << "\n";
return 0;
}'알고리즘 > 백준' 카테고리의 다른 글
| [C++]BJO : 1117 : 색칠 1 (0) | 2026.01.15 |
|---|---|
| [C++] BJO 1058 : 친구 (0) | 2026.01.14 |
| [C++] BJO 1024 : 수열의 합 (0) | 2026.01.09 |
| [C++] BJO 17142 : 연구소 3 (0) | 2025.12.01 |
| [C++]BJO 14891 : 톱니바퀴 (0) | 2025.11.28 |