안녕하세요. 오늘은 백준 10872번 팩토리얼 문제에 대해서 포스팅 하려고합니다.
문제는 위와 같이 0보다 크거나 같은 정수 N이 주어졌을 때, N!을 출력해야 하는 문제입니다.
만일 N으로 10을 입력하면 출력이 3628800이 나와야 정답처리가 되겠네요.
저는 C++을 공부하고 있어 아래와 같이 풀어보았습니다.
#include <iostream>
using namespace std;
int main(){
int n;
int sum = 1;
cin >> n;
if ( n == 0){
cout << "1" ;
}
else {
for (int i = 0; i < n; i++){
sum *= (n-i);
}
cout << sum;
}
}
백준 10872 풀이방식
저는 먼저 정수형 변수 n과 sum을 선언해주고 sum에는 초기값으로 1을 설정해주었습니다.
가장 먼저 팩토리얼에서 0!의 값은 0이 아닌 1이기 때문에 이 부분을 조건문을 통해 N==0일때, 1이 출력되게끔 해주었습니다.
그리고 그외에 값은 반복문을 사용했는데요.
저는 문제를 풀면 N의 예상값을 생각하며 푸니 조금 더 쉽게 접근할 수 있었습니다.
예를 들어 n==4일 경우, 4*3*2*1의 값을 구해야하고 총 4번의 반복이 있어야 합니다.
n값만큼 반복하는 것이기 때문에 for루프의 변수 i값은 0으로 초기화 하고 i가 n만큼 반복하게 해주었습니다.
sum *= ( n - i );은 sum = sum * (n - i )을 의미하며 초기화된 sum의 값 1과 ( n - i )을 곱해
다시 sum변수에 값이 저장됩니다.
첫번째 반복 후 sum의 값은 4, 두번째 12, 세번째 24, 네번째는 24가 됨을 알 수 있습니다.
그리고 마지막으로 저장된 sum을 출력해주며 마쳤습니다.
1학년 과목으로 C++을 배우며 백준 문제를 풀었는데 문과출신 수포자에 수학공부를 해본지 13년이 넘어가 헤롱헤롱 거리며 문제를 푼 기억이 나네요.
지금은 방학기간이라 주춤하고 있지만 다시 열심히 백준문제를 풀어야겠다 다짐하며 포스팅을 마칩니다.
'공부 > 컴퓨터' 카테고리의 다른 글
스크래치란? 스크래치의 특징/장점/방법 (39) | 2024.09.05 |
---|---|
VR(가상현실)이란? 특징과 출력방법에 대해서 (10) | 2024.09.04 |
QR코드란? 바코드와 QR코드의 차이와 특징 (1) | 2024.09.03 |
십진수의 r진수(2진수, 8진수, 16진수)로 변경하는 알고리즘 (0) | 2024.08.30 |
백준 1546번 평균 문제 C++ (0) | 2024.02.20 |