본문 바로가기

C++40

[백준] 2839번 : 설탕 배달- Greedy Algorithm (C++) 문제 풀이 - Greedy Algorithm(그리디 알고리즘) 가장 적게 봉지를 들고 가도록 하기 위해서 5kg 봉지를 최대한 이용해야 한다. 따라서, n을 5로 나눈 나머지가 0이라면, 몫을 출력한다. if (n % 5 == 0) { bag += (n / 5); cout n; while (n >= 0) { if (n % 5 == 0) { bag += (n / 5); cout 2023. 5. 25.
[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++) 문제 풀이 아래에 첨부한 2747번 문제와 같은 방식으로 풀이했다. 두 문제의 차이점은 n의 범위이다. 2747번 문제는 n의 최댓값이 45이지만, 이 문제는 90이기 때문에 DP를 int 형으로 선언하면 오류가 발생한다. n = 90일 때, 피보나치 수는 288,0067,1943,7081,6120이기 때문에, DP를 long long 형으로 선언했다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이며, long long의 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807이다. [백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경.. 2023. 5. 24.
[백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경우, 피보나치 수는 11,3490,3170이다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이므로, 피보나치 수의 최댓값이 범위 내에 있기 때문에, DP를 int로 선언했다. 코드 #include using namespace std; int main() { int n; int DP[45]; cin >> n; DP[0] = 0; DP[1] = 1; for (int i = 2; i 2023. 5. 24.
[백준] 2775번 : 부녀회장이 될테야 - (C++) 문제 풀이 k층의 n호에 거주하는 사람은 아래의 표와 같다. 재귀함수를 이용하여, getNum 함수를 만들었다. int getNum(int x, int y) { if (y == 1) { return 1; } else if (x == 0) { return y; } else { return (getNum(x - 1, y) + getNum(x, y - 1)); } } if else 문을 이용하여 n = 1인 경우에는, 항상 한 명이 거주하고 있기 때문에 return 1을 k = 0인 경우에는, 항상 n명이 거주하고 있기 때문에 return n을 해주었다. 위의 경우가 아니라면, (k층의 n-1호) + (k-1층의 n호) = (k층의 n호)가 성립한다. 코드 #include using namespace std;.. 2023. 5. 24.
[백준] 1546번 : 평균 - (C++) 문제 풀이 n, score, max, sum은 int형으로 선언한다. answer은 실수형으로 출력되기 때문에, float형으로 선언한다. '점수의 합계 X 100.0 ÷ 최댓값 ÷ 과목의 개수'가 출력값이 된다. 출력값은 소수점을 포함하는 값이여야 하므로, 100이 아닌 100.0으로 두었다. answer = sum * 100.0 / max / n; 코드 #include #include using namespace std; int main() { int n, score; float answer; cin >> n; int max = -1; int sum = 0; for (int i = 0; i > score; sum += score; if (score > max) { max.. 2023. 5. 16.
[백준] 11654번 : 아스키 코드 - (C++) 문제 풀이 char형 변수 c를 선언하고, 입력받은 후, (int)를 붙여 형 변환을 한다. 코드 #include using namespace std; int main() { char c; cin >> c; cout 2023. 4. 20.
[백준] 2675번 : 문자열 반복 - (C++) 문제 풀이 중첩 for문을 이용해, 문자열 반복을 구현한다. 테스트 케이스의 개수인 T를 입력받은 후, 첫 번째 for문에서, R, S를 입력받아 T번 동안 연산을 반복한다. 두 번째 for문에서는 문자열 S의 길이만큼 연산을 반복하고, 세 번째 for문에서 정수 R만큼 연산을 반복해, 결과값을 출력한다. 코드 #include #include using namespace std; int main() { int T, R, P; string S; cin >> T; for (int i = T; i > 0; i--) { cin >> R >> S; for (int j = 0; j < S.size(); j++) { for (int k = 0; k < R; k++) { cout 2023. 4. 20.
[백준] 2562번 : 최댓값 - (C++) 문제 풀이 int형 변수 num, max, a를 선언한다. num은 값을 입력받기 위한 변수, max는 최댓값을 저장하기 위한 변수, a는 몇 번째 변수인지를 저장하기 위한 변수이다. for문을 이용해, num의 입력이 9번 반복되도록 한다. if문을 이용해 num값이 max보다 큰 경우에 num 값을 max에 저장하고, i값을 a에 저장한다. for (int i = 1; i > num; if (num > max) { max = num; a = i; } } 코드 #include using namespace std; int main() { int num, max = -1; int a; for (int i = 1; i > num; if (num > max) { max = num; a = i; } } cout 2023. 4. 20.
[백준] 2475번 : 검증수 - (C++) 문제 풀이 고유번호는 각 숫자를 제곱한 수의 합을 10으로 나눈 나머지이다. int형 변수 num, answer, square을 선언해준다. for문을 이용해, num을 입력받고 square에 num의 제곱값을 저장하는 과정을 반복한다. 마지막으로, answer = square % 10으로 10으로 나눈 나머지를 도출해 출력한다. 코드 #include using namespace std; int main() { int num, answer = 0; int square = 0; for (int i = 0; i > num; square += num * num; } answer = square % 10; cout 2023. 4. 20.
반응형