[동빈나_코테][구현]

ynoolee·2021년 1월 22일
0

코테준비

목록 보기
2/146
post-custom-banner

유튜브에 동빈나님 이코테2021 몰아보기 영상을 보고 이론 수강 후, 직접 구현 & 코드 비교 + 관련 문제 푸는 방식

동빈나 이코테 : https://youtu.be/2zjoKjt97vQ

정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램 작성하기.

구현하기 문제인데 _ 떠오르는 건 수학적인 접근법 밖에 없었다.왜냐하면 모든 경우 때마다 적어도 하나의 3이 있는지를 확인하는 것을 구현하는 것이 너무 귀찮게 느껴졌다. 근데 이건 사실 그래야하는 문제였던 것이다.

[방법 1_ 수학적 접근]

  1. 00시 00분 00초 ~ 00시 59분 59 초 : 3600가지의 경우가 존재.

  2. 3이 하나라도 포함되어 있는 모든 경우의 수 구하기 : 전체 경우에서, 3이 하나도 포함되어있지 않은 경우의 수 구하기.
    0~9 에서 3을 제외 : 9
    0~5 에서 3을 제외 : 5

  3. 0초~59 초에서 제외할 경우의수 : 9x5
    0분~59분에서 제외할 경우의 수 : 9x5x(9x5)

  4. N x 3600 - (45 x45 (N-(n>=3)) )

  5. n이 0이어도 N은 1이어야 한다.

#include <iostream>

int main()
{
	int n;
	std::cin >> n;
	int result = (n+1)*3600 - (45 * 45 * (n+1 - (n >= 3))) ;
	
	printf("%d", result);
}

[방법 2 : <구현>]

  1. 1시간은 3600초
    24시는 86400초.
    1초가 지남에 따라 3 이 적어도 하나가 포함되어있는지 확인하기에 괜찮은 정도의 경우의 수

  2. 즉 모든 경우를 완전 탐색하는 방식.

  3. ab분 cd초에서

post-custom-banner

0개의 댓글