본문 바로가기

컴퓨터/백준 알고리즘

(177)
백준 알고리즘 1018번: 체스판 다시 칠하기 [C++] 문제 출처: www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 1. 코드 #include #include using namespace std; const char b[8][9] = { {"BWBWBWBW"}, {"WBWBWBWB"}, {"BWBWBWBW"}, {"WBWBWBWB"}, {"BWBWBWBW"}, {"WBWBWBWB"}, {"BWBWBWBW"}, {"WBWBWBWB"} }; const char w[8][9] = { {"WBWBWBWB"}, {..
백준 알고리즘 10757번: 큰 수 A+B [C++] 문제 출처: www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 코드 #include #include using namespace std; int main(void) { string a, b; cin >> a >> b; string result(max(a.length(), b.length()), '0'); int key = 0; for (int i = 0; i < result.length(); i++) { int sum = key; key = 0; if (i < a.size()) sum += a[a.length() - i - 1] - '0'; if (i < b.si..
백준 알고리즘 3052번: 나머지 [C++] 문제 출처: www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 1. 코드 (실행) 2. 풀이 int a, arr[42] = { 0, }, cnt = 0; for(int i = 0; i > a; 이 문제는 단계별로 풀기로 보면 1차원 배열과 관련이 깊다. 그래서 배열을 활용하여 풀어보겠다. 우선 10번의 입력을 받아야 한다. 그래서 반복문을 통해서 10번을 입력받는다. for(int i = 0; i > a; arr[a % 42] = 1; } 그리고 난 다음에 arr배열..
백준 알고리즘 2577번: 숫자의 개수 [C++] 문제 출처: www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net 1. 코드 #include using namespace std; int main(void) { int a, b, c, mul; int arr[10] = {0, }; cin >> a >> b >> c; mul = a * b * c; while (mul != 0) { int remain = mul % 10; for (int i = 0; i < 10; i++) { if (i == remain) arr[i]++; } mul /= 10; } for (int i ..
백준 알고리즘 2562번: 최댓값 문제 출처: www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 1. 코드 2. 풀이 int arr[9]; int max, index; 문제에서 9번만 입력을 한다고 한다. 그렇기 때문에 배열의 크기를 9만큼 설정해주고 최댓값을 저장하는 max라는 변수와 그 최댓값의 인덱스값을 저장하는 index라는 변수를 선언해준다. for (int i = 0; i > arr[i]; if (!i) { max = a..
백준 알고리즘 10818번: 최소, 최대 [C++] 문제 출처: www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 1. 코드 (실행) 2. 풀이 int n, max, min, a; cin >> n; n은 반복의 횟수, max는 최댓값, min은 최솟값, a는 입력값이다. 그리고 먼저 반복을 해주기 전에 반복횟수를 알아야하기 때문에 n을 입력받는다. for(int i = 0; i > a; 그리고 a를 입력받는다. if..
백준 알고리즘 10951번: A+B - 4 [C++] 문제 출처: www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 코드 (실행) 2. 풀이 while (1) 우선 문제를 읽어보면 알겠지만 종료시점이 나오지 않는다. 그렇다는 것은 EOF(end of file)이 적용됬다는 생각을 가지고 무한반복문을 생성한다. int a, b; cin >> a >> b; 그리고 a와 b를 선언 후 입력을 통한 초기화를 진행한다 if (cin.eof() == true) break; 그리고 입력을 했을 때 cin에 eof가 입력되었는지 검사를 한 뒤에 만약 eof가 입력이 됬으면 반복문을 탈출한다. cout
백준 알고리즘 10952번: A+B - 5 [C++] 문제 출처: www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 코드 (실행) 2. 풀이 int A, B; A와 B를 선언한다. while (1) A와 B에 각각 0을 입력하지 않으면 계속해서 계산을 진행하기에 무한 반복문으로 구성했다. cin >> A >> B; 반복문안에서는 A와 B를 입력받는다. if (A == 0 && B == 0) break; 그리고 A와 B의 값이 0이라면 반복문을 중지한다. cout