2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/알고리즘 수학

[알고리즘 수학] 쪽번호 붙이기

원당컴1 2023. 3. 23. 11:35

1부터 시작해 순차적으로 쪽번호를 어떤 책에 매기고 있다.

쪽 번호를 붙이는데 숫자를 1581개 썼다면 그 책은 몇쪽짜리 책인가?

(예 123 페이지 쪽 번호를 붙였다면 숫자를 1,2,3 세개를 사용한 것이다.)

[문제출처] 길벗 - 알고리즘퍼즐

 

문제풀이)

1~9 까지는 9개의 숫자를 사용한다.(총 9개 - 남은 갯수 1572)

10~99까지는 2개씩 90개의 수이므로 180개를 사용한다.(총 189개 - 남은 갯수 1392)

100~999 까지는 3개씩 900개의 수이므로 2700개를 사용한다.

100 부터 1392개를 사용한 경우이므로 1392를 3으로 나누면 464개가 된다. 100부터 464번째이므로 563 쪽이 된다.(100부터 1번째 쪽수는 100이므로 464번째는 563쪽이다.)

이것을 c언어 프로그램으로 만들어 보면 다음과 같이 구현할 수 있다.

//수의 갯수를 세는 함수
int numCnt(int num){
    int cnt=0;
    while(num){
    	cnt++;
        num/=10; ///num=1234 였다면 num=123 이 된다.
    }
    return cnt;
}

int main(){
    int sum=0;
    int digitCnt;
    int page;
    scanf("%d",&digitCnt); //사용숫자의 갯수를 입력 받는다.
    for(page=1;;page++){ //1페이지부터 번호를 매겨 간다.
    	sum+=numCnt(page); //페이지 쪽수의 수의 갯수를 구해서 누적하자.
        if(sum>=digitCnt) break;
    }
    if(sum==digitCnt){
    	printf("쪽수는 %d",page);
    }
    else{
    	printf("쪽수를 매길수 없습니다.");
    }
}

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기