[KR] Baekjoon 온라인저지 문제풀이 - 1 : 13300번

in #kr7 years ago

안녕하세요 @geunwoong0624입니다!

가입 인사를 제외한 글은 처음 써보는데요!
이번 포스트를 보시면서 불편하신 점이 있으시면 피드백 부탁드리겠습니다!

처음 쓸 내용으로 어떤 걸 쓸까? 하다 대학교에 들어와서 꾸준히 하려고 노력 중인 백준 온라인 저지 사이트 문제에 관련된 포스팅을 하면 어떨까 하여 쓰게 되었습니다.

백준 온라인 저지 사이트부터 설명을 드리자면 코딩 관련 문제를 모아둔 사이트입니다!
해당 자세한 문제는 여기서 확인해 주세요!

우선 문제에서의 입력을 보시면 핵심은 N 과 K 입니다.

제가 정한 풀이방법은 2차원 배열을 사용한 것입니다. (2차원배열과 관련해서는 다음포스팅에서 설명해 드리겠습니다.)

우선 제가 작성한 소스코드를 보시죠

#include <stdio.h>
int student[2][7];
int main(void) {
    int S, Y; //성별, 학년
    int studentNumber, MaxHuman; //학생수 한방의최대인원
    int count=0; //방의 수
    scanf("%d %d", &studentNumber, &MaxHuman); //학생수와 최대학생후를 입력함
    for (int i = 0; i < studentNumber; i++) {
        scanf("%d %d", &S, &Y);
        student[S][Y]++; //성별과 학년을 입력받은수 해당 배열의 값을 1증가 시킨다
    }
    for (int i=0; i < 2; i++) {
        for (int l = 1; l < 7; l++) {
            count = count + (student[i][l] / MaxHuman);
            if (student[i][l] % MaxHuman != 0) {
                count++;
            }
        }
    }
    printf("%d", count);
    return 0;
}

기본적으로 소스코드를 보시면 주석이 달려있기 때문에 이해에 도움이 되실겁니다.

2차원 배열을 성별과 학년을 기점으로 생성해 놓았습니다.

문제에서 요구하는것은 방의 수를 구하는 것 입니다. 따라서 규칙을 찾아 보겠습니다.

방의 수는 학년의 성별에 따른 학생수에 따라 결정됩니다.

예를 들어 3학년 여학생의 수가 3명인데 방의 크기가 2명이 들어갈경우 3/2 ==1 이므로 방의 수는 1에 3%2 ==1(나머지 수는 최대 방의 크기 미만이므로) -> 남은 사람이 1개의 방을 쓰므로 1+1 따라서 2개의 방을 사용하는 것을 알수있습니다.

이 말이 어려우신 분들을 위해 수식으로 알려드리겠습니다.

방의수는 학년의성별에 따른학생수 / 방의크기 + 1 or 0입니다.

그럼! 여기서 왜 1 or 0 인지를 알려드릴 텐데요

학년의 성별에 따른 학생수 % 방의 크기에서 결과값이 0이 아닌 경우 에는 1을 더해야 합니다! ( 방이 꽉찬 경우 남은 학생들끼리 방을 구성합니다)

그래서

if (student[i][l] % MaxHuman != 0) {
    count++;
}

이러한 소스 코드가 작성됩니다.

따라서 이러한 소스 코드를 제출하시면
캡처.PNG

맞았습니다! 가 뜹니다! :)

다음번 포스팅은 2차원 배열의 공부, 백준 사이트와 제가 공부한 것들 소개할까 합니다!

읽어주셔서 감사합니다!

Sort:  

저도 Baekjoon online judge 를 좋아했습니다.
algospot 도 아시겠지요? 탑코더는 없어졌나 봅니다.
projecteuler.org 도 있고,
알고리즘 연습 많이 많이 화이팅~~~

탑코더는 없어졌나요?? 한동안 안들어가긴 했는데
정보감사합니다! 요즘들어 알고리즘을 공부할수있는 사이트가 많이 생겨 좋네요ㅎ
연습 많이 하겠습니다! 감사합니다ㅎ!!