정화 코딩

백준 새싹 배지 얻기 - 1월 첫째 주 본문

PS

백준 새싹 배지 얻기 - 1월 첫째 주

jungh150c 2023. 1. 5. 08:05

1/5. 직사각형에서 탈출 (백준 1085번)

 

https://www.acmicpc.net/problem/1085

 

//C
#include <stdio.h>

int main()
{
    int x, y, w, h;
    int disX, disY;

    scanf("%d %d %d %d", &x, &y, &w, &h);

    disX = (x < w-x)? x : w-x;
    disY = (y < h-y)? y : h-y;

    printf("%d\n", (disX < disY)? disX : disY);

    return 0;
}

 

(정답) 백준 솔브드에서 새싹 배지 받기 프로젝트 1일차!! 화장실도 안 가고 일어나자마자 문제를 풀었다. 근데 너무 신기하게 머리를 굴리다보니 잠이 깼다. 너무 너무 좋은 것 같다! (왕만족)

 


 

1/6. 24 (백준 1408번)

 

https://www.acmicpc.net/problem/1408

 

//C
#include <stdio.h>

int main()
{
    int h1, h2, h3, m1, m2, m3, s1, s2, s3;

    scanf("%d:%d:%d", &h1, &m1, &s1);
    scanf("%d:%d:%d", &h2, &m2, &s2);

    h3 = h2 - h1;
    m3 = m2 - m1;
    s3 = s2 - s1;

    if(s3 < 0)
    {
        s3 += 60;
        m3 -= 1;
    }

    if(m3 < 0)
    {
        m3 += 60;
        h3 -= 1;
    }

    if(h3 < 0)
    {
        h3 += 24;
    }

    printf("%.2d:%.2d:%.2d", h3, m3, s3);

    return 0;
}

 

2일차 성공! (정답) 사실 딱 9시에 일어나서 보내느라 약간 늦었다..... 다음부턴 일찍 자고 더 일찍 일어나야지,,,

 


 

1/7. TV 크기 (백준 1297번)

 

https://www.acmicpc.net/problem/1297

 

//C
#include <stdio.h>
#include <math.h>

int main()
{
    int D, H, W;
    int realH, realW;

    scanf("%d %d %d", &D, &H, &W);

    realH = H * sqrt((double)(D*D) / (H*H + W*W));
    realW = W * sqrt((double)(D*D) / (H*H + W*W));

    printf("%d %d\n", realH, realW);

    return 0;
}

 

오늘은 어제 슬쩍 봤는데 어려워보여서 포기했던 펫 (백준 1362번) 문제를 풀어보려고 했으나..!!! 실패했다... 오늘 일어나서 한 시간 정도 풀고 알바하고 돌아와서 다시 도전했는데도 모르겠어서 그냥 다른 문제를 골랐다,,, (둘 다 브론즈2인데 역시 같은 등급이여도 문제 나름인가 보다.) 식만 잘 세우고 형변환만 신경쓰면 되는 문제였다. 높이 비율과 너비 비율을 실제값으로 바꿔줄 수(n)를 먼저 구하고, 그걸 비율들에 각각 곱해서 실제값들을 얻었다. (n*H)^2 + (n*W)^2 = D^2 이 때 D, H, W는 정수이므로 그냥 계산하면 n^2이 정수로 나온다. 그러므로 분자값을 (double)로 형변환을 해준다. <math.h>을 불러오고 sqrt 함수를 이용해 제곱근을 구한다. (sqrt의 결과값은 항상 double로 나온다.) 그러면 문제 끝~! (정답)

 


 

1/8. 평균 (백준 1546번)

 

https://www.acmicpc.net/problem/1546

 

//C
#include <stdio.h>

int main()
{
    int n, sum = 0;
    float newavg;
    scanf("%d", &n);

    int score[n];
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &score[i]);
        sum += score[i];
    }

    int max = score[0];
    for(int i = 1; i < n; i++)
        if(score[i] > max)
            max = score[i];
    
    newavg = (sum * 100.0) / (n * max);
    printf("%f\n", newavg);

    return 0;
}

 

브론즈1이지만 간단한 문제였다. newavg값이 아래에서 계산이나 출력은 float로 나오게 했지만 위에서 선언 자체를 int로 하는 바람에 자꾸 이상한 값이 나와서 살짝 막혔다. (바보 같은 실수!!) 아무튼 (정답)

 

Comments