본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1382번 : GuguClass

by 빛밤하늘 2021. 12. 1.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

GuguClass

구구단의 2~5단을 문제 설명에서 보여준 출력 양식대로 출력한다. 표현 오류가 날 가능성이 높으므로 다음 조건들을 잘 확인하여 작성한다. 1. 연산자와 피연산자 사이에는 공백이 한칸 존재한다

codeup.kr

 

 

생각해 볼 점

1. 출력 형식

문제를 보면 표현 오류가 날 가능성이 높으므로 문제 설명에서 보여준

출력 양식대로 출력하는 것에 주의를 주고 있습니다.

특히 문제에서 주의를 주는 점들 중에서 2번과 3번에 주의해서 구현해야 합니다.

 

 

예제 설명

1. 첫 번째 예제

- 입력

입력은 없습니다.

 

- 출력

티스토리에서 작성하려고 하니 실제 문제에서처럼 출력 형식에 맞게 이쁘게 작성되지 않네요.

출력은 포스팅의 맨 위에 있는 문제 링크를 클릭해서 직접 확인해보시길 바랍니다.

2 x 1 =  2 3 x 1 =  3 4 x 1 =  4 5 x 1 =  5
2 x 2 =  4 3 x 2 =  6 4 x 2 =  8 5 x 2 = 10
2 x 3 =  6 3 x 3 =  9 4 x 3 = 12 5 x 3 = 15
2 x 4 =  8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45

- 설명

입력한 두 주사위를 굴려 나오는 합 k는 5입니다.

첫 번째 주사위와 두 번째 주사위의 숫자의 합이 5가 되는 경우를 

첫 번째 주사위의 숫자가 작은 순서대로, (첫 번째 주사위, 두 번째 주사위) 형식으로 나타내면

두 주사위 숫자의 합이 5인 경우는 (1, 4), (2, 3), (3, 2), (4, 1)입니다.

 

 

생각한 풀이 과정

구구단 출력 형식
구구단 출력 형식

파란 네모를 보면 한 줄을 출력할 때, 2에서 5단으로 단의 숫자가 먼저 증가하면서 출력합니다.

그리고 한 줄 출력이 끝나면 1에서 9까지 곱해지는 숫자가 증가합니다.

이것을 중첩 반복문으로 구현하려면 1에서 9까지 곱해지는 숫자를 외부 반복문으로,

2에서 5까지 단의 숫자를 내부 반복문으로 구현하면 됩니다.

 

'2 x 1 = 2'와 '3 x 1 = 3'의 사이처럼 각 단을 구별하는 공백(빨간 네모)은

스페이스 바로 한 칸을 띄우는 것이 아닌 탭(\t)으로 띄어야 합니다.

 

- 외부 반복문 시작

하나의 단에서 단 숫자와 곱하는 숫자인 1 ~ 9를 반복합니다.

for num in range(1, 10):

 

- 내부 반복문 시작

현재 곱하는 숫자 num에서 2 ~5단을 출력 형식에 맞게 한 줄로 출력하는 반복문입니다.

2단부터 5단까지 출력해야 하므로 단을 뜻하는 숫자인 2부터 5까지 반복합니다.

for dan in range(2, 6):

 

현재 곱하는 숫자에서 현재 단을 출력 형식에 맞게 출력합니다.

곱하는 숫자와 단의 곱셈 결과는 %d를 사용하여 두 칸으로 봤을 때 우측 정렬하여 출력합니다.

단과 단 사이에는 스페이스 바를 사용한 공백이 아닌 탭(\t)으로 분리해야 하므로 마지막에 \t을 사용합니다.

다음 줄로 내리지 않습니다.

print(f"{dan} x {num} = {'%2d' % (dan * num)}\t", end='')

- 내부 반복문 끝

현재 곱하는 숫자에서 2단부터 5단까지 한 줄 출력이 끝나면 다음 줄로 내려줍니다.

print()

- 외부 반복문 끝

 

 

제출한 파이썬 코드

# 하나의 단에서 단 숫자와 곱하는 숫자인 1 ~ 9를 반복합니다.
for num in range(1, 10):
    # 현재 곱하는 숫자 num에서 2 ~ 5단을 출력 형식에 맞게 한 출로 출력하는 반복문입니다.
    # 2단부터 5단까지 출력해야 하므로 단을 뜻하는 숫자인 2부터 5까지 반복합니다.
    for dan in range(2, 6):
        # 현재 곱하는 숫자에서 현재 단을 출력 형식에 맞게 출력합니다.
        # 다음 줄로 내리지 않습니다.
        print(f"{dan} x {num} = {'%2d' % (dan * num)}\t", end='')
    # 현재 숫자에서 2 ~ 5단의 한 줄 출력이 끝나면 다음 줄로 내립니다.
    print()

 

 

제출 결과

CodeUp 1382번 : GuguClass에서 코드 제출 결과
CodeUp 1382번 : GuguClass에서 코드 제출 결과

 

 

기타

문제에서 제공한 관련 동영상을 클릭해도 동영상을 확인할 수 없는데,

밑의 묻고 답하기에서 찾아보니까 밑에 링크 동영상인가 봅니다.

문제를 푸는 것이랑은 전혀 상관없고

코딩을 하는 사람에게는 특히 이 문제를 푸는 사람에게는 약간 어이없이 웃긴 장면입니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글