반응형

IT 프로그래밍/백준 55

[c++] 15894번 수학은 체육과목 입니다.

문제코드#include using namespace std;int main(){ unsigned int n; cin >> n; cout  풀이정말 간단한 문제지만 오답률이 조금 있었던 것이 바로 범위를 파악하지 못했기 때문입니다.  그냥 int n; 으로 하면 되지 않을까? 라고 생각할 수 있지만 주어진 입력 범위가 1  따라서 해당 경우에 오버플로우가 발생하게 됩니다. 그러기 때문에 unsigned int 를 사용하면 됩니다.unsignedint는 0부터 4,294,967,295 범위의 수를 사용가능한 것입니다.

[c++] 백준 3009번 네 번째 점

문제코드#include using namespace std;int main(){ int x[3]; int y[3]; for (int i = 0; i > x[i] >> y[i]; } if (x[0] == x[1]) { cout  문제 풀이주어진 세 점을 이용하여 직사각형의 네 번째 점을 찾는 프로그램입니다. 직사각형은 네 점으로 이루어져 있고, 이 중 세 점이 주어졌을 때 나머지 한 점의 좌표를 구하는 것입니다. 주어진 세 점 중 좌표값이 두 번 등장하지 않은 값을 찾으면 되는데요. 이것만 추론해냈다면 코드를 구성하는 것은 간단합니다.  먼저 int x[3], int y[3]을 통해 각각 저장할 배열을 만들어줍니다. 이후 if문을 통해 각각의 경우의 수를 구해주면 되는데요. 문제에서 평행한 네 좌표라는 ..

[c++] 1193번 : 분수찾기

문제 코드#include using namespace std;int main(){ int n; cin >> n; int line = 1; while (n - line > 0) { n -= line; line++; } if (line % 2 == 1) { cout  문제 해설int n;cin >> n;int line = 1;사용자로부터 n을 입력받습니다. line은 몇 번째 대각선인지 나타냅니다. 이렇게 대각선 순서대로 1, 2, 3, 4, 5 로 라인을 계산을 해줄 것입니다. 라인을 구해주는 이유는 라인을 구해야 공통점이 나오기 때문입니다. while (n - line > 0){ n -= line; line++;}while 루프를 통해 n이 몇 번째 위치의 대각선이 있는지 구해줍니다. 각..

[c++] 백준 2292번 : 벌집

문제코드#include using namespace std;int main(){ int n; cin >> n; int number = 0; for (int i = 2; i  풀이"층"을 구하는 것인데요. 이 층은 6의 등비수열로 이루어져 있습니다. 숫자를 자세히 보면12~78~1920~37로6 12 18 24... 순으로 묶여있는 것을 볼 수 있습니다. 이럴 경우 6 * Layer 식으로 범위가 늘어갑니다. 이를 활용하여 등비수열의 합을 구하면 되는데요.int n;cin >> n;int number = 0;for (int i = 2; i 이렇게 for문을 써서 i는 6 * number 만큼 증가하게 하고서 루프를 짜면 됩니다. 이럴 경우  n = 19라면number = 0, i = 2로 시작첫 번째 반복..

[C++] 2720번 세탁소 사장 동혁

문제 코드#include using namespace std;int main(){ int n, j; int arr[4] = { 25, 10, 5, 1 }; cin >> n; int a, b, c, d; for (int i = 0; i > j; a = j / arr[0]; j -= a * arr[0]; b = j / arr[1]; j -= b * arr[1]; c = j / arr[2]; j -= c * arr[2]; d = j / arr[3]; j -= d * arr[3]; cout  문제 해설금액을 각각의 동전 단위로 나누어서 최소 동전을 환산하는 것입니다. 이같은 경우 탐욕적 알고리즘을 사용하면 금방 풀 수 있습니다.  일단 저는 그냥 흐름대로 코딩을 작성하여서 제 코드가 최선의 알..

[c++] 백준 2563번 색종이

문제코드#include using namespace std;int main(){ int arr[101][101] = { 0, }; // 101x101 크기의 2차원 배열을 0으로 초기화하여 선언 int a, b; int num; cin >> num; // 사각형의 수를 입력받음 int answer = 0; // num개의 사각형을 입력받아 그리기 for (int k = 0; k > a >> b; // 사각형의 시작 좌표 (a, b)를 입력받음 for (int i = a; i  해설처음에는 어떻게 푸는지 조금 시간이 걸렸습니다. 겹치는 부분을 전체 영역에서 빼서 구해야 하나? 생각을 하다가 도저히 모르겠어서 다른 정답 풀이의 푸는 방법을 조금 보고서 ..

[C++] 백준 10798 세로읽기

문제   코드#include using namespace std;char a[5][16];int main(){ for (int i = 0; i > a[i]; } for (int i = 0; i  해설* 배열에서 유효한 문자만 출력할 것 여기에서 다른 부분은 읽어보면서 대충 어떤 느낌으로 풀어야할지 감이 잡힐 것입니다. 여기서 놓치기 쉬운 부분은 바로 if(a[k][i] != '\0') 이 부분인데요. 유효한 데이터가 아닐 때 출력하지 안ㅇㅎ기 위해 '\0'을 해주어야 합니다. 이 조거니 없다면 쓰레기 값이 출력이 될 수 있습니다.  만약 예제가ABCDE123XYZHELLOWORLD이렇게 주어진다면 이것을 세로로 해서 출력을 하라는 문제입니다. 저희가 이것을 각각 char a[0], a[1], a[2]. ..

[c++] 백준 2738번 : 행렬 덧셈

문제  문제코드#include #include #include using namespace std;int arr[101][101], arr2[101][101];int main(){ int N, M; cin >> N >> M; for (int i = 0; i > arr[i][k]; } } for (int i = 0; i > arr2[i][k]; } } for (int i = 0; i  문제설명이중 for문을 통해 2차원 배열의 연산이 가능해집니다. int arr[101][101], arr2[101][101];두 개의 행렬 arr과 arr2를 선언합니다. 최대 크기는 101 x 101이 됩니다. for (int i = 0; i > arr[i][k]; }}첫 번째 행렬 arr의 원소를 이중 for문을..

[C++] 25206번 너의 평점은

문제전공 학점: 학점 * 과목 평점전공 학점 평균: 전공 학점 / 총 학점P 과목은 제외 따라서 전공 학점들을 계산하여 모두 더한 후 총 학점으로 나눠주면 문제를 해결하면 된다.정답코드#include #include #include using namespace std;int main(){ float count = 0; float sum = 0; string grade[9] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" }; for(int i =0; i> x >> y >> z; if (z == "P") { continue; } count += y; if (z == "F") { continue; } float num = 5.0; ..

반응형