본문 바로가기
C/Baekjoon

[BOJ] SISS 겨울방학 스터디 - 8주차

by 단월໒꒱ 2022. 2. 17.

#11720

[문제]

 

 

 

[코드 및 결과]

 

#include <stdio.h>

int main() {
    int N, sum = 0;
    char num[100];
    
    scanf("%d\n", &N);
    
    for (int i = 0; i < N; i++) {
        scanf("%c", &num[i]);
        sum += num[i] - '0';
    }
    
    printf("%d\n", sum);
    
    return 0;
}

 

 

 

 

 

 

[설명]

숫자의 개수 N을 입력받고 문자열 num배열을 선언하여 여기에 N개의 정수를 저장하도록 했다. (공백없이 입력하는 게 가능하기 때문)

반복문으로 입력받는 정수를 저장하며 동시에 sum에 값을 더해준다.

여기서 문자열로 입력 받았기 때문에 '0'을 빼줘서 정수값을 저장하도록 했다.

마지막으로 위에서 구한 sum을 출력한다.

 

 

 

#1085

[문제]

 

 

 

[코드 및 결과]

 

#include <stdio.h>

int main() {
    int x, y, w, h, width_min, height_min;
    
    scanf("%d %d %d %d", &x, &y, &w, &h);
    
    width_min = x > (w - x) ? (w - x) : x;
    height_min = y > (h - y) ? (h - y) : y;
    
    printf("%d\n", width_min > height_min ? height_min : width_min);
    
    return 0;
}

 

 

 

 

 

 

[설명]

scanf 함수로 문제에서 필요한 좌표값 x, y, w, h를 입력받는다.

삼항 연산자를 이용하여 x와 w-x, y와 h-y를 비교하여 작은 값을 각각 width_min, height_min에 저장한다.

다시한번 width_min과 height_min을 비교하여 둘 중 작은 값을 출력해주었다.

(math 헤더파일 넣은 후에 min 함수 사용하는 것도 가능하다.)

 

 

 

#10250

[문제]

 

 

 

[코드 및 결과]

 

#include <stdio.h>

int main() {
    int T, H, W, N;
    
    scanf("%d", &T);
    
    for (int t = 1; t <= T; t++) {
        scanf("%d %d %d", &H, &W, &N);
        printf("%d%02d\n", (N - 1) % H + 1, (N - 1) / H + 1);
    }
    
    return 0;
}

 

 

 

 

 

 

[설명]

테스트케이스 T, 층수 H, 방 개수 W, 손님이 온 순서 N을 정수로 선언하고 이들을 scanf 함수로 입력 받는다.

문제 내용을 이해해보면 손님이 오는 순서대로 101, 201, 301 ... H01, 102, 202, .... H02, 103, 104, ... HW 순으로 배정된다.

이를 이용해서 손님이 온 순서인 N에서 1을 뺀 값을 H로 나누고 난 나머지와 몫을 구하고 각각의 값에 1씩 더한 값을 합쳐서 배정될 방의 호수를 출력하면 된다.

호수의 끝자리의 경우 1은 01로 출력해야하기 때문에 포맷형에 %2d로 해서 자릿수를 설정해주었다.

 

// 한번 Fail이 떴었는데, 맨 꼭대기 층에 배정될 경우에 대하여 고려하지 못했기 때문이었다.

// 이를 고려해서 나눠지는 값을 N-1로 바꿔주니 해결할 수 있었다. 

 

 

댓글