백준 #17 [C++] 2739. 구구단, C++ for문

K Choi·2022년 2월 3일
0

백준

목록 보기
17/37
post-thumbnail

❔문제:백준 2739

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

➡️입력

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

⬅️출력

출력형식과 같게 N1부터 N9까지 출력한다.

예제 입력 1

2

예제 출력 1

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

풀이

for문 정말 오랜만이네요. 한 문제 풀 때마다 하루 한 문제씩 풀길 잘 했다는 생각 뿐,,ㅋㅋ 평일이라도 하루 한 문제씩 안 풀고 방학 다 지나갔으면 개강 쯤이면 다 까먹은 상태였을 것 같아요...

C 코드

#include <stdio.h>
int main() {
    int N;
    scanf("%d", &N); 
    for (int i=1; i<10; i++)
        printf("%d * %d = %d\n", N, i, N*i);
    return 0;
}

워낙 기본 유형인 데에다 새 언어 배울 때마다 풀어본 문제여서 한 번에 맞췄네용ㅎㅎ 반복 학습 + 시험의 효과

C++ 코드

#include <iostream>
using namespace std;
int main(){
    int N;
    cin >> N;
    for (int i=1; i<=9; i++)
        cout << N << " * " << i << " = " << N*i << endl;
    return 0;
}

반복코드 마지막에 endl로 개행을 안 해줘서 틀렸다가 후딱 고쳤습니당ㅎㅎ

C++ for문은 처음인만큼 기본 틀 정리하고 넘어가겠습니다.

C++ for문

for문: 특정 코드를 반복하기 위해 쓰는 반복문

예를 들어 화면에 Hello World를 10번 출력하려고 하면 아래와 같이 작성할 수 있는데요,

cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";
cout << "Hello World";

이렇게 같은 코드를 10번씩 작성하는 것은 매우 비효율적이죠?
효율성을 높이기 위해 for문을 사용하면 됩니다.

C++도 C에서처럼 for(초기 설정; 반복 조건; 반복 시 수행할 명령)로 시작한 후 이 뒤의 중괄호{} 안에 반복할 문장을 써주면 됩니다.

for(초기 설정; 반복 조건; 반복 시 수행할 명령) {
    반복할 문장;
}

그럼 위의 10줄짜리 코드를 출력하려면 어떻게 하면 될까요?

for(int i=0; i<10; i++) {
    cout << "Hello World";
}

for문의 괄호 안의 초기 설정 부분에 i=1을 작성했죠?
반복문이 시작되기 전 변수 i에는 1이 저장됩니다.
for문이 시작되면 반복할 문장 부분이 실행됩니다.
즉, 화면에 Hello World가 출력됩니다.

반복할 문장이 실행된 후 반복 시 수행할 명령이 시행됩니다.
반복 시 수행할 명령 부분에 i++이 작성되어 있죠?
반복할 문장이 1번 실행될 때마다 i값이 1씩 증가합니다.

위 과정은 반복 조건이 충족될 때까지 반복됩니다.
반복 조건 부분에 i<10이 작성되어 있죠?
i가 1씩 증가해 9가 될 때까지 반복할 문장

int i;
for(i=0; i<10; i=i+1) {
    cout << "Hello World";
}

①, ② 코드 둘 다 Hello World를 10번 출력하는 코드입니다.
둘의 차이점은 무엇일까요?

①에서는 정수형 변수 int를 for문 안에서 선언해줬고
②에서는 int를 for문 시작 전에 선언해줬습니다.
①처럼 for문 안에서 선언해준 i는 for문 내에서만 사용 가능합니다.
for문을 빠져 나오는 순간 없는 변수인 셈이죠.
반면 ②는 i를 for문 밖에서 선언해줬으므로 for문 내부, 외부 모두에서 사용이 가능한 변수가 됩니다.

한 가지 예를 더 살펴보겠습니다.

int i;
for(i=1; i<=10; i=i+1) {
    cout << i;
}

위 코드를 실행하면 어떤 결과가 출력될까요?
i=1(초기 설정)부터
i가 10이하인 동안(i<=10)
1씩 증가(i=i+1)하면서
매 회 i를 출력합니다.

즉 출력 결과는 아래와 같게 됩니다.
1 2 3 4 5 6 7 8 9 10

profile
mbeCoder

0개의 댓글