본문 바로가기
파이썬/BOJ_반복문

[백준 2739 파이썬] 구구단 - 반복문 (for, while, 출력 (f-string, %d, format))

by 쉽게사는방법 2023. 1. 2.
반응형

[백준 2739 파이썬] 구구단 - 반복문 (for, while, 출력 (f-string, %d, format))

 

안녕하세요.

세번째 챕터 반복문입니다. 입출력, 사칙연산, 조건문은 조금 손이 많이 가는 챕터였죠? 반복문(for, while)을 배우시면 이제 간단한 코드로 복잡하고 반복적인 계산을 쉽게 수행할 수 있게 됩니다. 두근거리지 않나요?

 

문제

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

출력

출력형식과 같게 N*1부터 N*9까지 출력한다.

출력 예제
출력 예제

 

문제 분석

구구단은 1~9까지의 숫자를 1~9까지의 숫자와 곱하는 계산이죠? 보통 1단은 입출력이 같으니 생략하고 2단부터 9단까지 학교에서 외우라고 시켰던 기억이 있네요.

 

이번 문제는 정수 N을 입력받아 N단 구구단을 예제출력과 같은 형식으로 출력해야 합니다. 예제출력을 보시면 입력은 하나인데, 출력은 9개가 되네요! 반복문을 통해 N 곱하기 1~9 연산을 반복 수행하고 결과를 출력해야 하니, 바로 이 때 반복문이 필요하게 되겠죠!

 

반복 연산

문제에서 반복되는 연산은 '곱하기'입니다. 무엇과 무엇을 곱하죠? 입력받은 N과 구구단 1~9의 숫자죠? N은 항상 같은데 1~9는 반복 횟수마다 변하게 됩니다. 변화하는 수는 변수죠? 1~9를 i라는 변수로 치환합니다. 그렇다면 반복되는 계산은 'N * i' 형태로 정리되네요!

 

코드: 'N*i 를 반복해서 계산해라'

 

반복문 - while 문, for 문

'반복해서 계산해라' 부분은 어떻게 표현할까요? 바로 반복문이죠! 파이썬에서 반복문은 대표적으로 while문과 for문이 있습니다. while문은 특정 조건이 만족되는 한 계속 반복할 때 사용하며, for문은 반복 횟수가 명확한 경우에 사용하게 됩니다. (구분이 무의미하고 편한 방법으로 구현하면 되는 경우도 많습니다.)

 

반복문은 말로 설명하는것보다 코드를 작성하고 매 루프를 돌때마다 결과값이 어떻게 나오는지 출력을 해보는게 이해가 빠릅니다. 아래 표를 보시죠.

코드
(예시)
        N=2
        i=1
        while i<=9:       
# 9 이하면 반복
            print(N*i)
            i+=1               
# 1 증가 후 다음루프

        N=2
        for i in range (1,10):       
# 1~9 반복
            print(N*i)

루프 (i=) while 문 출력값 for문 출력값
1 2 2
2 4 4
3 6 6
4 8 8
5 10 10
6 12 12
7 14 14
8 16 16
9 18 18
10 조건 거짓, 루프 미작동 n/a (i=9까지만 반복)

두 방식 모두 결과는 같습니다. while문은 조건이 '참'이면 무한 반복하기 때문에 조건을 바꿔줘야 하고 i를 1씩 증가시켜 i가 10이 되었을 때에는 조건이 '거짓'이 되어 루프를 작동시키지 않습니다. for문은 이미 i는 1~9까지만 반복하도록 설정되어있으므로 별도의 조건 부가 없이 N*9까지만 연산을 수행하게 됩니다.

 

참고 - range 함수

참고로 range 함수는 range (시작, 끝) 형태로 작성하면 시작~끝-1까지 1씩 증가하는 수열을 생성하게 됩니다. range(시작, 끝, 증분)과 같이 세번째 매개변수를 추가해주면 증분을 1이 아닌 값으로도 지정할 수 있죠. (음수도 가능) 주의할 점은 끝 숫자는 포함되지 않는다는 점입니다. 위 표에서 range(1,10)으로 지정하면 1~9까지 범위가 생성되는 점 참고하세요!

 

답안

답안 예시

while문, for문 각각 예시를 보겠습니다. 위에서 작성한 코드와 크게 다르지 않죠?

오히려 주의할 점은 '출력' 부분입니다. 예제 출력에서 숫자와 기호를 섞어서 출력해야 하며, 숫자 부분은 변수 값을 출력해야 하기 때문에 특별한 방법들이 필요합니다. 출력 형식에 대한 설명은 아래에서 자세히 살펴보기로 하고 우선 답안 코드를 보시죠!

백준 2739 풀이 (파이썬) while 문 / for 문
백준 2739 풀이 (파이썬) while 문 / for 문

 

출력 형식

기호와 변수가 섞여있는 출력 형식은 기본적으로 따옴표 (" " 또는 ' ')를 붙여 문자열로 지정하지만 특별한 방식으로 변수를 출력 가능하게 합니다. 가장 쉬운 방법들을 모아보았습니다. 아래 표를 참고하셔서 위의 답안 부분을 보시면 충분히 이해가 되시리라 생각됩니다!

코드 예시 방식 설명
print(f"{N} * {i} = {N*i}") f-string 문자열 앞에 'f' 붙임, 변수는 {변수명} 형식으로 표시
print('%d * %d = %d' %(N,i,N*i)) % 자료형 % + 자료형 약어 표시 (정수: %d, 실수: %f, 문자열: %s),
출력값 뒤 % + 변수명 (복수인 경우 괄호 안 순서대로)
print('{} * {} = {}'.format(N,i,N*i))
print('{0} * {1} = {2}'.format(N,i,N*i))
print('{a} * {b} = {c}'.format(a=N,b=i,c=N*i))
format
메서드
대괄호 {} 공란인 경우 '.format()' ()안 순서대로 표시
대괄호 안에 index나 변수 지정 가능 (index: 괄호 안 0부터 순서대로 / 변수: 괄호 안에서 변수명과 값 지정 필요)

 

간단한 문제라서 가벼운 마음으로 포스팅 작성을 시작했는데 반복문 첫 문제이고 출력 형식에 대한 언급도 필요하다보니 내용이 꽤나 많아졌습니다. 자주 쓰이는 내용들이니 앞으로도 여러 문제에서 참조하게 될 것 같네요!

 

세 답안 모두 무리없이 정답 확인하고, 이만 마치도록 하겠습니다.

제출 결과
제출 결과

 

읽어주셔서 감사합니다.

반응형

댓글