상세 컨텐츠

본문 제목

[백준 - 실5] 1476 날짜 계산 C언어

알고리즘/C

by 셉인 2022. 9. 2. 02:02

본문

728x90

1476 백준

1476번: 날짜 계산 (acmicpc.net)

 

1476번: 날짜 계산

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타

www.acmicpc.net

 

맞았습니다!

갑자기 비쥬얼 스튜디오가 안돼서 .. 내 정답률을 낮춰벌임;;

실수

**실수 부분에서 중요한 것 

a,b,c=1을 해서 한번에 1을 넣어주는줄로 착각하고 있었다. 

하지만 그렇게 하면 저렇게 c를 제외한 a랑 b가 오류가 난다.

a=1,b=1로 오류를 수정하고 했더니 정답이 되었다.!

 

#include <stdio.h>

int main() {
    int E=0, S=0, M = 0;
    scanf("%d %d %d", &E, &S, &M);
    int year = 0;
    int a=1, b=1, c = 1;
    while (1)
    {
        year++;
        if (E == a && S == b && M == c)
        {
            printf("%d", year);
            break;
        }
        a++;
            if (a % 16 == 0)
                a = 1;
        b++;
        if (b % 29 == 0)
            b = 1;
        c++;
        if (c % 20 == 0)
            c = 1;
    }
   
    return 0;
}

아.. 코드 블럭이란 기능이 있는지 처음알았다.. ㅎㅎ 

 

<코드 해석>

먼저 E, S, M을 int형으로 선언해줍니다. 

그다음 scanf 정수만 받을 거니 %d로 받아줍니다. 

year이 저희가 print해야할 값 ! 

0부터 시작해줘야합니다.

후위증가연산자를 통해 한바퀴 돌때마다 증가시킵니다. 

그리고 a가 E를 b가 S를 c가 M을 대변해준다고 생각하면 돼요.

해를 거듭할수록 year도 올라가지만 a와 b,c의 각 값도 올라갑니다. 

그래서 규칙에 맞게 a는 16의 배수일때, b는 29의 배수 일때, c는 20의 배수일때 1을 대입해줍니다.

a=15+1 =>1 이라고 생각하시면 돼요.

 

이런식으로 while 반복문으로 계속해서 반복하다가 입력받은 ESM과 abc의 각 값이 같아지면 year의 값을 출력하고 break를 통해 끝나게 되는 것입니다. 

728x90

'알고리즘 > C' 카테고리의 다른 글

[백준 - 브3] 2441번 별 찍기 C언어  (0) 2022.09.03
[백준 - 브5] 1330 두 수 비교하기 C언어  (0) 2022.09.03
백준 10869 사칙연산  (0) 2022.07.05
백준 8393 합  (0) 2022.07.05
백준 2163 초콜릿자르기  (0) 2022.07.04

관련글 더보기

댓글 영역