// ver.2 효율적 코드(함수)
#include <stdio.h>

// 한라봉의 총 무게
int x;

// 입력 :  상자의 무게
// 출력 :  상자를 사용한 횟수
int whil(int N)
{
	// 상자를 사용한 개수
	int r = 0;
	// 한라봉의 무게가 상자의 작을 때 까지 반복
	while (x >= N)
	{
		// 한라봉의 무게에서 상자의 무게를 뺴어
		// 상자에 한라봉을 담았다는걸 표현해준다.
		x -= N;

		// 사용한 상자 개수를 1 증가시켜준다.
		r++;
	}
	return r;
}

int main(void)
{
	// 한라봉을 담기 위한 상자들을 사용한 최소 횟수 저장
	int a;

	scanf("%d", &x);

	// a에 10kg, 5kg, 3kg, 1kg 박스들을 사용한 횟수를 저장시킨다.
	a = whil(10) + whil(5) + whil(3) + whil(1);

	// 총 상자를 사용한 최솟값을 출력한다.
	printf("%d", a);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC E0  (0) 2023.02.14
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

안녕하세요. 오랜만에 SFPC 글에서 정보 글로 만나게 되네요.

오늘은 우연히 창고를 뒤지다가 발견한 윈도우 XP 설치 CD를 보고 떠오른 영감인
vmware에 윈도우 설치 CD(물리적) 이용해서 OS 설치하는 법을 알려주겠습니다.

참고로 저는 지금부터 가상머신과 진짜 컴퓨터를 구분하기 위해
진짜 컴퓨터를 호스트 컴퓨터, 가상머신을 게스트 컴퓨터라 부르겠습니다.

먼저 물리적 CD를 구울 CD 리더기에 CD를 삽입해서 호스트 컴퓨터에서 인식하게 합니다.
(TMI: 사람들은 CD를 인식시키는 것을 CD를 굽는다라고 말하는데 그 이유는 CD를 사용할 때 CD에 있는
빤짝거리는 부분을 레이저같은걸로 태워 데이터를 사용하거나 저장시키기 때문에 굽는다고 말하는 겁니다.)

이제 VMware를 열면 되는데 아직 설치를 안 하셨으면 아래 글을 참고해서 설치한 후 돌아와 주세요.

 

vmware Workstation player(Pro 30일 체험판) 설치 법

먼저 아래 사이트에 접속한 후 'DOWNLOAD NOW' 버튼을 클릭해 설치 파일을 다운로드 받은 후 열어서 vmware Workstation Player를 설치합니다. 사이트가 접속이 안되거나 다운로드가 오래걸리면 아래 파일

menofpassion.tistory.com

 

CD를 삽입했다면 VMware를 연 후 New Virtual Machine를 클릭합니다.
(저는 원래 VMware Workstation pro를 사용하지만 이것은 돈을 내며 사용하는 것이기 때문에 무료판인
VMware Workstation player를 기준으로 알려주겠습니다.)

클릭한 다음에 창이 뜨면 맨 위 installer disc를 선택한 후 CD를 선택해 주세요.
(CD가 2개 이상 인식되어있지 않으면 이미 선택되어 있을 겁니다.)

Next를 클릭한 후 Windows product Key를 입력해야 하는데 이건 CD가 담긴 봉투나 같이 준 종이 같은 거에 쓰여있을 수 있습니다.
거기 있는 키를 입력한 후 이름과 비밀번호는 알아서 적어주시고 Next를 클릭합니다.
(참고로 비밀번호는 안 넣으면 없는 걸로 됩니다.)

이제 Next를 누른 후 게스트 컴퓨 이름과 저장 위치를 정해줍니다.
(이름은 마음대로 하면 되지만 저장 위치를 바꿀 때는 꼭 설치 파일이 들어갈 폴더를 지정해야 합니다!)

Next를 누른 후 디스크의 크기를 정해주면 되는데 이건 하고 싶은 만큼 해주면 되지만 게스트 컴퓨터로 파일 작업을 하지 않는 이상은 권장 사항(기본 추천 용량)으로 진행하는 걸 추천합니다.

그리고 Next를 누른 후 최종 게스트 컴퓨터 스펙을 확인한 후 Finish를 누르면 만들기는 끝났습니다!

하지만 만들기'만' 끝난 거지 아직 윈도우는 설치가 안된 상황이라 Finish를 누르면 게스트 컴퓨터가 자동으로 켜지며 CD가 갑자기 요동을 치기 시작할 겁니다.
CD에 있는 설치 파일들을 읽고 있기 때문이죠.

저는 윈도우 XP로 하고 있어서 윈도우 XP 설치 화면이 나오네용

여기서부턴 어떤 종류의 CD냐에 따라 달라지는데 하라는 데로 진행하면 됩니다.
저는 딱히 건들게 없으므로 잠시 유튜브 좀 보고 오겠습니다ㅎ

01234
윈도우 XP 설치하는 과정

좀 기다리니 VMware tool까지 설치되고 있네요.

참고로 VMware tool은 게스트 컴퓨터의 해상도를 VMware의 창 크기에 따라 자동으로 바꿔주는 등 여러 편리한 기능을 주는 프로그램입니다.

재시작까지 완료됐다면 이제 설치가 끝났습니다!

#include <stdio.h>

int main()
{
	printf("2022-04-16");
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10
#include <stdio.h>

// M = 달 별 마지막 날을 저장한 배열
// W = 요일들을 저장한 배열
int M[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
char W[7][4] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };

// 입력: 윤년을 확인할 년도 y
// 출력: 윤년이면 1, 아니면 0
int is_yun_year(int y)
{
	return (((y % 4) == 0) && ((y % 100 != 0)) || ((y % 400) == 0));
}

int main()
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);

	int num = 0;
	// a * b * c를 한 값에서 1까지 빼주며 최소공배수를 구해준다.
	for (int i = a * b * c; i >= 1; i--)
	{
		if (i % a == 0 && i % b == 0 && i % c == 0) num = i;
	}

	// year = 정답 년도, month = 정답 월, day = 정답일, week = 정답 요일
	// 초기값은 2100년 1월 1일 금요일
	int year = 2100, month = 1, day = 1, week = 5;
	while (1)
	{

		// 만약 is_yun_year 함수에서 결과가 1이 나오면 윤년이란 뜻인데
		// M[2]가 2월 달 끝부분이므로 29로 바꾼다.
		if (is_yun_year(year))
			M[2] = 29;
		else
			M[2] = 28; // 윤년이 아니면 28로 둔다.
		if (num >= M[month]) // 만약 현재 달의 마지막 날을 넘은 상황
		{
			num -= M[month]; // num에 달 수를 뺸다.
			week += M[month]; // 요일에 지난 달 수를 더해준다.
			week %= 7; // week를 7로 나눈 값의 나머지를 저장하여 요일값으로 업데이트한다.
			month++; // 달을 하나 올린다.
			if (month == 13) // 만약 month가 13이면 년도를 올려줘야 하므로
			{
				year++; // 년도를 올려주고
				month = 1; // 달을 1로 바꿔준다.
			}
		}
		else break; //num가 M[month]를 넘지 않으면 이 반복문을 나간다.
	}
	// week와 num을 더한 값에 7로 나눈 값의 나머지를 저장시키며 요일을 구해준다.
	week = (week + num) % 7;

	// 년도는 4칸에 맞춰서 출력하고
	// 월과 일은 2칸에 맞춰 출력한다.
	// 요일은 요일들이 있는 배열 W에서 골라 출력해준다.
	printf("%04d-%02d-%02d %s", year, month, day + num, W[week]);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E0  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

#include <stdio.h>

int main()
{
    printf("8");
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E0  (0) 2023.02.14
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10
#include <stdio.h>

// 입력 : d(소수값을 확인하는 정수)
// 출력 : d가 소수이면 1, 아니면 0
int is_prime(int d)
{
    // i = 약수
    for (int i = 2; i < d; i++)
    {
        // 만약 d % i를 했는데 0이 나오면 i가 약수이므로 d는 소수가 아니니
        // 0을 리턴한다.
        if (d % i == 0) return 0;
    }
    // 2부터 d - 1까지 약수가 하나도 없다면 1을 리턴한다.
    return 1;
}

int main()
{
    long long n;

    scanf("%lld", &n);
    // a = 오늘 칭찬 스티커를 받은 학생 수
    // b = 지금까지 칭찬 스티커를 받은 학생 수
    long long a = 1, b = 1;

    // 3월 1일부터 스티커를 주기 시작하므로
    // month를 3, days를 1로 설정한다.
    int month = 3;
    int days = 1;
    // count에는 며칠이 걸리는지 저장하므로 1로 정해준다.
    int count = 1;
    while (1)
    {
        // 종료 조건 : 칭찬 스티커를 n 이상 받았을 경우
        if (b >= n)
        {
            printf("%d", count);
            return 0;
        }

        // days를 1 만큼 늘려서 시간이 갔음을 표현하고
        // count를 1 만큼 늘려 정답을 만든다.
        days++;
        count++;
        // 가장 큰 테스트 케이스의 정답이 4월 달 안에서 끝났으므로(n = 1e17일 떄 49일 걸림)
        // 3월 31 다음인 4월 1일로 설정
        if (days > 31)
        {
            // month를 1 올려 다음 달로 넘어가고
            // days를 1로 하여 다음달의 시작점을 저장시킨다.
            month++;
            days = 1;
        }
        // 칭찬 스티커 배급
        if (is_prime(days))
        {
            // days가 소수이므로 3을 곱해준다.
            a *= 3;
            // b에 a를 누적한다.
            b += a;
        }
        else
        {
            // days가 소수가 아니므로 2를 곱해준다.
            a *= 2;
            // b에 a를 누적한다.
            b += a;
        }
    }
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC E0  (0) 2023.02.14
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10
2021 SFPC C0  (0) 2023.02.10

+ Recent posts