210509_TIL

hyeojung·2021년 5월 9일
0

TIL

목록 보기
44/62
post-thumbnail

백준 알고리즘 1463번 : 1로 만들기

#include <stdio.h>

#define MIN(a, b) (((a) < (b)) ? (a) : (b));

int memo[1000001] = { 0, };

int make_one(int x)
{
	if (x == 1)
		return (0);
	else if (memo[x] != 0)
		return (memo[x]);
	else
	{
		memo[x] = make_one(x - 1) + 1;
		if (!(x % 3))
			memo[x] = MIN(memo[x], (make_one(x / 3) + 1));
		if (!(x % 2))
			memo[x] = MIN(memo[x], (make_one(x / 2) + 1));
	}
	return (memo[x]);
}

int main(void)
{
	int x = 0;

	memo[1] = 0;
	memo[2] = 1;
	memo[3] = 1;
	scanf("%d", &x);
	printf("%d", make_one(x));
}


백준 알고리즘 2164번 : 카드2

#include <stdio.h>
#include <stdlib.h>

int find_front(int front, int n, int* card)
{
	while (front <= n)
	{
		if (front == n)
			front = 1;
		if (card[++front] == 1)
			break;
	}
	return (front);
}

int main(void)
{
	int n;
	int* card;
	int front = 1, back;

	scanf("%d", &n);
	card = (int*)malloc(sizeof(int) * (n + 1));
	for (int i = 0; i < n + 1; i++)
		card[i] = 1; // 배열 초기화
	back = n;
	while (n != 1)
	{
		card[front] = 0;
		front = find_front(front, n, card);
		if (front == back)
			break;
		back = front;
		front = find_front(front, n, card);
	}
	free(card);
	printf("%d", front);
	return (0);
}


😂

  • 이거 푸는 데 시간도 꽤 걸리고 너무 힘든 건 내가 공부를 하기 싫기 때문일까,,?
profile
응애 나 애기 개발자

0개의 댓글