본문 바로가기
BOJ

[python] 백준 1951번 - 활자

by yujinkimkim 2023. 2. 15.

https://www.acmicpc.net/problem/1951

 

1951번: 활자

옛날에는 책을 만들 때, 한글자 한글자를 나눠서 활자를 만들어서 그걸 합쳐서 책을 만들었다고 한다. 예를 들면 가나다라는 글씨를 쓰기 위해서는 3개의 활자가 필요할 것이다. 그렇다고 할 때,

www.acmicpc.net

대충 느낌대로 풀면서 코드 짜다보니까

산으로 가서

그냥 시원하게 한숨 자고 왔당ㅎ


n = int(input())
s = [0 for i in range(10)]
point = 1
while n :
    while n % 10 != 9:
        for i in str(n):
            s[int(i)] += point
        n -= 1
    if n < 10:
        for i in range(n + 1):
            s[i] += point
        s[0] -= point
        break
    else:
        for i in range(10):
            s[i] += (n // 10 + 1) * point
    s[0] -= point
    point *= 10
    n = n // 10

print(sum(s) % 1234567)

이거 다른 분 코드인데요

저거 배열로 더해주는거 아이디어 짱이실래

ㅂ ㅔ 꼈슴다

죄송하고 감사하고,,

 

저거 문자열로 바꿔서 하나씩 가져와서 다시 정수형으로 바꾸는 부분 완전 인상깊었슴다

[백준] 1951 활자 with Python :: BackEnd Dev DreamTree It's (tistory.com)

 

[백준] 1951 활자 with Python

📌 BOJ 1951 활자 💡 조건 N(1 ≤ N ≤ 2,000,000,000) 가나다라는 글씨를 쓰기 위해서는 3개의 활자가 필요하다. N이하의 자연수를 활자로 표현하기 위해서는 몇 개의 활자가 필요한지 구하는 문제 10이

dreamtreeits.tistory.com

이분입니당

#include <stdio.h>

int main(void)
{
	int n, ans = 9, num = 0, temp, jegob = 10;
	scanf_s("%d", &n);

	if (n <= 9)
	{
		ans = n;
	}
	else
	{
		temp = n;
		while (temp > 9)
		{
			temp = temp / 10;
			num++;

			for (int i = 0; i < num - 1; i++)
				jegob = jegob * 10;
			ans += (n - (jegob - 1)) * (num + 1);
			printf("%d\n", ans);
		}
	}
	printf("%d", ans % 1234567);
	return 0;
}

이게 제가 쓰던건데용

뭘하려하는지 짐작 가시나용

오늘 날씨가 춥더라,,거긴 어때,,?

-민정언니에게-

댓글