본문 바로가기

코린이의 성장기/코린이의 백준 도전기

코린이의 백준 도전기 1일차(2)

2023년 4월 22일 토요일

 

계속 백준 푸는 중인데 27433번(팩토리얼 2) 에서 무려 5번의 시도끝에 성공하였다.

5번의 시도 끝에 성공..!

 

27433번 문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

N(0<=N<=20)  <- 이 조건을 잘 생각했었어야 하는데 왜 틀렸는지 잘 모르고 있었다

 

내 변수 기준으로 int 형 변수에 factorial 함수도 int형으로 설정하여서 문제가 발생했던 것인데 20!의 범위는 int형을 훨씬 넘어가기 때문에 잘 고려했었어야 한다. 그 다음 실수는 main함수 안에 있는 변수는 long으로 바꿨으면서 정작 factorial 결과가 나오는 함수는 int형으로 해놔서 문제가 발생했다. 

마지막에서야 뭐가 문제인지 알게 되었고 고쳤음.

 

27433번 문제 (아직까지는 브론즈 문제 풀고 있지만 처음 해서 그런지 문제 푸는 게 너무 재밌다 알아가는 재미도 있고ㅎㅎ)

 

몇번인지 생각 안나는 세 수 정렬

내가 할 수 있는 최선은

 

#define _CRT_SECURE_NO_WARNINGS
#include 
void swap(int* a, int* b) {
int tmp;
tmp = *a;
*a = *b;
*b = tmp;

}


int main(void) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int max, min, mid;
if (a < b) {
max = b;
min = a; 
mid = c;
}
else
{
max = a; 
min = b; 
mid = c;
}

if (max > c)
{

if (mid < min)
swap(&mid, &min);



}
else {

swap(&max, &mid);

}



printf("%d %d %d",min,mid,max );
return 0;
}

이거였는데 더 효율적인 방법은 없을까? 나중에 c언어에 조금 눈이 뜨면 그때 다시 생각해보자

 

 

 

문자열이랑, 시간 파트는 너무 약하고 1도 모르겠어서 다음에 c언어 공부하고 다시 도전해봐야겠다

 


오늘 백준 2일차 오늘 41문제 풀었다 한 1300위?대 였었는데 단숨에 1000위 안으로는 들었다

230422오후9시02분 951등(성균관대기준!) 전체기준 103441등

 

내일은 800위대 진입하고 + 전체 등수 100000안에 진입하는 걸 목표로 하자!! 

 

오늘의 백준 끝!

23년 4월 22일 기록 41개