2588번: 곱셈

[2588번: 곱셈]

image
정수형 변수 a, b가 주어지면 a * b에서
위의 그림처럼 3, 4, 5, 6에 들어갈 숫자를 출력하는 건데요…
3, 4, 5는 b의 숫자를 하나씩 쪼개서 각각 a에 곱해주면 될 듯 한데
머릿속으로는 구현이 되는데 코드를 짜려고 하니 좀 힘드네요.
사용자에게서 입력받은 정수 값을 배열로 변환할 방법이 없을까요?

1 Like

사용자에게 값을 처음부터 문자열로 입력 받고
필요할 때만 정수로 변환해서 사용하시는 건 어떤가요?

아니면 정수로 입력받은 다음 문자열로 변환해서 배열취급 한다거나…

저는 일단 간단하게 파이썬으로 풀어 봤읍니다.

해답
num1 = input()
num2 = input()

for count1 in range(2, -1, -1):
    print(int(num2[count1]) * int(num1))
print(int(num1) * int(num2))
2 Likes

10으로 나누고 나머지 넣고 나누고 넣고 반복

2 Likes

이렇게 간단히 풀릴 줄은…

1 Like

정수를 배열처럼 사용해서 풀어봤어요

C언어 풀이
main(m, n) {
	scanf("%d %3s", &m, &n);

	for (int i = 2; ~i; --i) printf("%d\n", m * (((char*)&n)[i] & 0xF));

    printf("%d\n", m * ( (((char*)&n)[0] & 0xF) * 100 
                       + (((char*)&n)[1] & 0xF) * 10 
                       + (((char*)&n)[2] & 0xF) ));
}
1 Like

정수값을 배열로 변환이요?

a = [int(i) for i in input()]

이걸 원하시는 건가?

def solve(A, B): # A, B are strings
    Aint = int(A)
    Bint = int(B)
    B = [int(i) for i in B]
    for c in reversed(B):
        print(Aint * c)
    print(Aint * Bint)



def main():
    A = input().strip() # \n 제거
    B = input().strip() # \n 제거
    solve(A, B)

if __name__ == "__main__":
    main()

이렇게 하시면 될거 같아여

2 Likes

생각해보니 기초적인 문제였어요.
변수 b = 385를 10으로 나누면 몫은 38, 나머지 5.
그럼 그 나머지를 472에 곱하고
그리고 아까 나온 몫 38을 b에 대입합니다.
다시 38을 10으로 나누면 몫은 3, 나머지 8.
그 나머지를 또 472에 곱하고
몫 3을 b에 대입, 10으로 나누면 몫은 0 나머지 3 * 472

좀 늦었지만 풀이에 도움을 주신 @lys3199 님과
이 질문에 답해주신 모든분들께 감사드립니다.

1 Like