티스토리 뷰





/*  * invaildCounter.c  *  * Created on: 2014. 10. 8.  * Author: YoWu (uyu423@gmail.com)  * IDE: Eclipse Luna (gcc 4.8.2)  */ #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" int main(void) { int halflife2;     //input value int gordon = 1, freeman = 0; int gordon_freeman = 0; int bbaru;     //temp value int combine = 10;     //combine = combine * 10; int smg1[10];             //save array value by halflife2 int ar2 = 0;     //smg1 counter int i = 0; scanf("%d", &halflife2); bbaru = halflife2; //input halflife2 to smg1 array while (bbaru) { smg1[i] = bbaru % combine; bbaru = bbaru / combine; ar2++; i++; } //calculate for (i = 0; i < ar2; i++) { if (smg1[i] >= 4) { gordon_freeman = gordon_freeman + gordon + (freeman * (smg1[i] - 1)); } else { gordon_freeman = gordon_freeman + (freeman * smg1[i]); } freeman = gordon + (freeman * 9); gordon = gordon * 10; } printf("%d\n", halflife2 - gordon_freeman); return 0; }

(변수명이 저 모양인 것은 최근에 하프라이프2를 다시 했는데 재밌어서 그렇다. 양해 바랍니다.)


0~9 까지의 4의 갯수 = 1개

0~99까지의 4의 갯수 = 9개(4, 14, 24, 34, 54, 64, 74, 84, 94) + 40~49(10개) = 19개

0~999까지의 4의갯수 - 19개 * 9 + 100개

이런 식으로 각 자리수에 포함된 4의 갯수를 뽑을 수 있는 규칙이 발견된다. 

처음 입력 값 (halflife2)에서 구한 4의 갯수(gordon_freeman)을 빼면 원래 값이 나온다.


(14. 11. 15 추가) 그런데 교수님께서 올려주신 모법 답안은 다음과 같다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int m; char n[12];

int main()
{
	scanf("%s", n);
	for (char* p = n; *p; ++p) m = m * 9 + (*p > '4' ? (*p) - '1' : (*p) - '0');
	printf("%d", m);

	return 0;
}

멘붕



저작자 표시 비영리 변경 금지
신고
공유하기 링크
태그 클라우드
,
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.