meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • 배포인프라
  • cpu사용률
  • router-link
  • SASS Variables
  • DHCP
  • docker
  • 안드로이드adaptor
  • Proxy
  • dockersecret
  • 개발자도서
  • 리눅스방화벽
  • 중첩라우트
  • django
  • gabagecollecter
  • 이차원배열정렬
  • 코틀린자료형
  • 리눅스인증
  • dp #알고리즘
  • Kotlin
  • 테크커리어

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/Coding test

[Coding test Basic with c++] N!의 표현법

2021. 12. 27. 13:33
728x90
반응형

문제

임의의 N에 대하여 N!은 1부터 N까지의 곱을 의미한다. 이는 N이 커짐에 따라 급격하게 커진 다. 이러한 큰 수를 표현하는 방법으로 소수들의 곱으로 표현하는 방법이 있다. 먼저 소수는 2, 3, 5, 7, 11, 13... 순으로 증가함을 알아야 한다. 예를 들면 825는 (0 1 2 0 1)로 표현이 가능한데, 이는 2는 없고 3은 1번, 5는 2번, 7은 없고, 11은 1번의 곱이라는 의미이다. 101보 다 작은 임의의 N에 대하여 N 팩토리얼을 이와 같은 표기법으로 변환하는 프로그램을 작성해 보자. 출력은 아래 예제와 같이 하도록 한다.

▣ 입력설명
첫 줄에 자연수 N(3<=N<=1000)이 입력된다.

▣ 출력설명
소수의 곱으로 표현한다.

 

입력 예제

5

 

출력 예제

5! = 3 1 1

 

풀이

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
	int n, i, j, tmp;
	
	scanf("%d", &n);
	vector<int> a(n+1);
	
	for(i=2; i<=n; i++){
		tmp=i;
		j=2;
		while(1){
			if(tmp%j==0){
				tmp=tmp/j;
				ch[j]++;
			}else j++;
			if(tmp==1) break;
		}
	}
	
	printf("%d! = ", n);
	for(i=2; i<n; i++){
		if(ch[i]!=0) printf("%d ",ch[i]);
	}

	return 0; 

}

N!=1 * 2 * 3 ... * N 이면 1을 제외하고 2부터 나누어 나머지가 0이 되면, 소인수분해가 된다. 나누어 떨어진 값을 ch 배열에 횟수를 저장하고 값이 1이 될때까지 나눈다. ch 배열에 저장된 값을 n개 만큼 출력해주면 된다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'IT_study > Coding test' 카테고리의 다른 글

[코딩테스트 / c++] Inversion Sequence (삽입 정렬 풀이)  (0) 2022.01.02
[코딩테스트 / c++] Least Recently Used(2018 카카오 캐시 문제 변형)  (0) 2022.01.02
[Coding test Basic with c++] Anagram(아나그램 : 구글 인터뷰 문제)  (0) 2021.12.25
[Coding test Basic with c++] 자릿수의 합  (0) 2021.12.21
[Coding test Basic with c++] 모두의 약수  (0) 2021.12.21
    'IT_study/Coding test' 카테고리의 다른 글
    • [코딩테스트 / c++] Inversion Sequence (삽입 정렬 풀이)
    • [코딩테스트 / c++] Least Recently Used(2018 카카오 캐시 문제 변형)
    • [Coding test Basic with c++] Anagram(아나그램 : 구글 인터뷰 문제)
    • [Coding test Basic with c++] 자릿수의 합
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바