목록Computer Science/Problem Solving (13)
세상에 나쁜 코드는 없다
정답 비율이 48%나 육박하는 dp 문제였다 풀이: #include using namespace std; const int R=0, G=1, B=2; int expense[1000][3]; int houseNum; //ans[n][color]은 n번째 집이 color인 경우에 드는 최소 비용 int ans[1000][3]; void init() { cin >> houseNum; for(int i=0; i expense[i][j]; } int findSmall(int a, int b) { if(a>=b) return b; else return a; } int getMinimumExpense() { ans[0][R]= expense[0][R]; ans[0][G]= expense[0][G]; ans[0][B]..
https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net #include using namespace std; int board[128][128]; int boardSize; int blue=0, white=0; bool isSameColor(int x, int y, int size) { int color = board[x][y]; for(int i=0; i boardSize; for(int i=0; i< boardSize; ..
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 #include #include #include using namespace std; int graph[20][20]; int num; int minValue=99999; int steam[19]; int steam_size; int lteam[19]; int lteam_size; vector vec; void init() { cin >> num; fo..
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net #include using namespace std; int arr[50][3]; int num; void init() { cin >> num; for(int i=0; i> arr[i][0] >> arr[i][1]; } } //덩치 순위를 계산해서 arr[][2]에 저장 void computeRank() { for(int i=0; i
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net #include using namespace std; char board[50][50]; int row, col; void init() { cin >> row >> col; for(int i=0; i board[i][j]; } } } // board[r][c]에서 시작하는 8*8 체스판에서 칠해야하는 가장 적은 값 반환 int getMinAtBoard(int r, int c) { int c..
#include #include using namespace std; int numberArr[9]; int length; bool isPalindrome() { int half=length/2; for(int i=0; i0; i--) { if(numberArr[i] == 10) { numberArr[i-1]++; numberArr[i] = 0; } } } int main() { int count; string input; while(1) { count=0; cin >> input; length = input.length(); if(input == "0") break; for(int i=0; i< length; i++) { numberArr[i] = input.at(i) -'0'; } while(!isP..