728x90
728x90

그리디 16

백준] 1541 - 잃어버린 괄호

시간 제한 : 2초 메모리 제한 : 128MB 입력 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 출력 첫째 줄에 정답을 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { int len, start, end; string str, substr=""; vector intArr; vector opArr; cin >> str; len = str.length(); start = 0; for (int i = 0; i < l..

백준] 2891 - 카약과 강풍(COCI 2009/2010)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 팀의 수 N, 카약이 손상된 팀의 수 S, 카약을 하나 더 가져온 팀의 수 R이 주어진다. (2 ≤ N ≤ 10, 2 ≤ S, R ≤ N)둘째 줄에는 카약이 손상된 팀의 번호가 주어진다. 팀 번호는 중복되지 않는다.셋째 줄에는 카약을 하나 더 가져온 팀의 번호가 주어진다. 팀 번호는 중복되지 않는다. 출력첫째 줄에 출발을 할 수 없는 팀의 최솟값을 출력한다. 소스코드#include #include using namespace std; int main(void) { int N, S, R, retire = 0; cin >> N >> S >> R; vector team(N + 1, 1); vector broken(S); vector spare(R); ..

백준] 1049 - 기타줄

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은 0보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력첫째 줄에 김지민이 기타줄을 적어도 N개 사기 위해 필요한 돈의 최솟값을 출력한다. 소스코드#include #include using namespace std; int main(void) { int n, m, sum = 0; int package[50], piece[50]; bool cheap = false; cin >> n >> m; for (int i = 0; i < m; i++..

백준] 1018 - 체스판 다시 칠하기

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N과 M이 주어진다. M과 N은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개 줄에는 체스판의 색 상태가 주어진다. B는 검정색이며, W는 흰색이다. 출력첫째 줄에 지민이가 8*8크기로 자른 뒤에 다시 칠해야하는 정사각형 개수의 최솟값을 출력한다. 소스코드 #include #include using namespace std; string board[50]; int n, m; int countDrawing(int y, int x) { int cnt1 = 0, cnt2 = 0, ret; for (int i = y; i < y + 8; i++) { for (int j = x; j < x + 8; j++) { if ((i - ..

백준] 15720 - 카우버거(중앙대 CodeRace 2018)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에는 주문한 버거의 갯수 B, 사이드 메뉴의 갯수 C, 음료의 갯수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000)둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진다.셋째 줄에는 각 사이드 메뉴의 가격이 공백을 사이에 두고 주어진다.넷째 줄에는 각 음료의 가격이 공백을 사이에 두고 주어진다.각 메뉴의 가격은 100의 배수이며, 10000원을 넘지 않는다. 출력첫째 줄에는 세트 할인이 적용되기 전 가격을 출력한다.둘째 줄에는 세트 할인이 적용된 후의 최소 가격을 출력한다. 소스코드 #include #include using namespace std; int main(void) { int b, c, d, tmp..

백준] 1138 - 한 줄로 서기

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 크거나 같고, N-i-1보다 작거나 같다. 출력첫째 줄에 줄을 선 순서대로 키를 출력한다. 소스코드 #include using namespace std; int main(void) { int n; int arr[10], ans[11] = { 0, }; cin >> n; for (int i = 0; i > arr[i]; ans[arr[0] + 1] = 1; for (int i = 1; i < n; i++) { int cnt = 0; fo..

백준] 1439 - 뒤집기

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 문자열 S가 주어진다. S는 백만보다 작은 길이 출력첫째 줄에 다솜이가 해야하는 행동의 최소값을 출력한다. 소스코드 #include #include using namespace std; int main(void) { string s; int len, zeropart = 0, onepart = 0, cnt = 0; cin >> s; len = s.length(); if (s[0] == '0') zeropart = 1; else onepart = 1; for (int i = 1; i < len; i++) { if (s[i] != s[i - 1]) { if (s[i] == '0') zeropart++; else onepart++; } } cout

백준] 10610 - 30(COCI 2014/2015)

시간 제한 : 1초메모리 제한 : 32MB 입력N을 입력받는다. N는 최대 10^5개의 숫자로 구성되어 있다. 출력미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 소스코드 #include #include #include using namespace std; int main(void) { char arr[100001]; int cnt = 0, len, tmp, sum = 0; cin >> arr; len = strlen(arr); for (int i = 0; i < len; i++) { if (arr[i] == '0') cnt++; else sum += (int)(char)(arr[i] - '0'); } if (cnt == 0) cout = 0; ..

728x90