백준 - for문 사용하기

1. 별찍기 -2

문제 : 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별 (예제 참고)을 출력하시오.

    *
   **
  ***
 ****
*****
#include <stdio.h>

int main(void)
{
    int s;
    scanf("%d",&s);
    
    for(int i=1; i<=s; i++){
        for(int j=s; j>i; j--){
        printf(" ");
        }
        for(int j=1; j<=i; j++){
        printf("*");
    }
        printf("\n");
    }
}

문제 2: 별찍기 - 4 / 2441번

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, …, N번째 줄에는 별 1개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별 (예제 참고)을 출력하시오.

*****
 ****
  ***
   **
    *

int main(void)
{
    int s;
    scanf("%d",&s);
    
    for(int i=1; i<=s; i++){
        for(int j=0; j<i-1; j++)
            printf(" ");
        for(int j=s; j>=i; j--){
            printf("*");
        }
            printf("\n");
        }
}

-> 고민하면 다 풀 수 있는데. 몇번 찍어서 오류를 수정해본 불편함이 있었다. 만약 손코딩이었다면 시간이 더 걸렸을 듯.. 집중해야 문제도 풀린다.

2007년 문제

문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

입력 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

방법

int main(void)
{
    int x, y, cnt = 0;
    scanf("%d %d", &x, &y);
    
    char Month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
    for(int i=1; i<x; i++){
        cnt += Month[i-1];
    }
    cnt += y;
    
    switch(cnt%7)
    {
        case 0:
            printf("SUN\n");
            break;
        case 1:
            printf("MON\n");
            break;
        case 2:
            printf("TUE\n");
            break;
        case 3:
            printf("WED\n");
            break;
        case 4:
            printf("THU\n");
            break;
        case 5:
            printf("FRI\n");
            break;
        case 6:
            printf("SAT\n");
            break;
    }
    
}

여기서 중요한 건 배열 생성, 모든 일수 더하고, 스위치 문 작성 정도가 되겠다.


참고자료

[백준 온라인 코딩 스터디] (https://www.acmicpc.net/)

0%