woonadz :)

[백준/C언어] 정수론 및 조합론_3036번_nabi 본문

IT/백준

[백준/C언어] 정수론 및 조합론_3036번_nabi

C_scorch 2021. 11. 8. 20:06
반응형

기록용

3줄 TMI

어제 소소한 행복(?)이 있었다. 바로 C++ 프로그래밍 중간고사에서 최고점을 받았다!!! 사실 모든 학점이 나온게 아니고 단순히 중간만의 점수라 이렇게 좋아하는 이유가 이해되지않는 사람도 있을 것이다. 시험 하나로 이렇게 기쁜 이유는 1학기 내 프로그래밍 성적과 비교가 많이 되기 때문이다. 자세한 얘기는 끝인사에서...

 


 

처음에는 그냥 출력이 첫번째 숫자와 그 뒤에 이어지는 숫자를 나눴을 때 기약분수 형태구나라고만 생각했다. 그리고 무작정 코드를 구현하기 시작했다. 구현하면서 기약분수의 정의를 생각해보니 출력값 자체가 이 문제에 힌트라는 것을 알 수 있었다.

 기약분수 : 분모와 분자를 최대공약수로 약분하여 1 이외의 공약수를 갖지 않도록 만든 분수를 뜻한다. 즉, 분모를 공약수로 나누면 기약분수가 된다. -사이언스올-

따라서 기약분수 형태로 출력을 하기 위해선 최대공약수를 구해야 한다.

최대공약수를 구하기 위한 포스팅은 

https://scorchingnraining.tistory.com/entry/%EA%B0%9C%EB%85%90%EC%A0%95%EB%A6%AC%EC%A0%95%EC%88%98%EB%A1%A0-%EB%B0%8F-%EC%A1%B0%ED%95%A9%EB%A1%A0nabi

 

[개념정리]정수론 및 조합론_nabi

기록용 3줄 TMI 시험 끝나고 첫 포스팅이다. 어제 시험이 끝났는데 오늘(11/3) 바로 스터디 준비에 들어갔다. 일단 딥러닝 강의도 슬슬 끝을 보이기 시작한다. 앞으로 일주일 뒤에 딥러닝 강의 수강

scorchingnraining.tistory.com

이 글을 참고해주셨으면 한다.

 

이렇게 상상?으로 구현을 마치고 코드를 보도록 하겠다.

#include <stdio.h>

int main() {
	int N = 0, cha,a,b;
	int Arr[100]; //입력 N을 최대 100으로 설정 할 수 있으므로

	scanf_s("%d", &N);

	for (int i = 0; i < N; i++) 
		scanf_s("%d", &Arr[i]);

	for (int i = 1; i < N; i++) {
		a = Arr[0];
		b = Arr[i];
		if (a < b) { //a와 b 중 더 큰수를 a 변수에 집어넣기
			cha = a;
			a = b;
			b = cha;
		}
		while (b != 0) { //최대공약수 구하기
			cha = a % b;
			a = b;
			b = cha;
		}

		printf("%d/%d\n", Arr[0]/a, Arr[i]/a); //기약분수 형태로 출력
	}

	return 0;
}

 

주석에 코드 설명을 해놨으므로 추가 설명은 생략하겠습니다~

 

 

 

 


끝인사 및 느낀점

백준 정수론 및 조합론 카테고리에 있는 문제들은 대부분 내가 풀 수 있는 문제였다.(아직 다 풀어본건 아니지만...) 알고리즘 공부는 나에게 너무 어려울 것 같다며 왜 미뤄만왔는지 이제는 이해할 수 없다. 아직 백준 실버 문제 푸는 수준이지만 이번년도 목표를 백준 골드가기로 잡았다. 앞으로 약 2달 남았다. 내가 할 수 있을까?

 

 

위에서 못다한 이야기를 하자면 대학교에 처음 올라오고 첫 프로그래밍 중간고사에서 뒤에서 2등을 했다... 이 사실이 너무나도 창피하고 부끄러워서 부모님께도 친구들에게도 말하지 않고 친구 단 한명한테만 말하고 울었던 기억이 있다. 공부를 안했기에 그런 성적이 나온 것이 아니냐고 생각할지도 모르지만 공부 정말 열심히 했다. 그래서 더 서러웠었다. 근데 지금 생각해보면 내가 했던 공부는 공부가 아닐지도 모른다. 이론 ppt만 보고 고등학교 때 처럼 주구장창 외웠다. 내 기억으로는 2문제였나 빼고는 다 틀렸다. 그때 속으로 진짜 오만가지 생각을 다했다. '내가 공부를 잘못했나' 부터 '나한테 맞지 않는 과를 왔나?','전과 준비 벌써 해야 하나' 까지 충격적인 점수가 내게 엄청난 심리적 타격을 주었다. 그리고는 학원을 끊었다. 대학생이 되어서까지 학원을 다닌다는 사실이 창피했지만 전혀 어떻게 공부해야할지 감조차 잡지 못하는 내게 그건 최선의 선택이었다. 새로 다닌 학원을 1달 만에 그만두었고 어떻게 공부를 해야할지 조금 감을 잡았다. 그 이후로 여름방학 때 백준에서 브론즈 3,4,5 수준의 문제를 풀었고 9월부터는 브론즈~실버까지의 문제들을 풀고 있다. 그냥 이번 중간고사를 통해 내가 공부를 하고 있다는 걸 느낄 수 있어서 좋았다. 

반응형