인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김민준님의 프로필 이미지
김민준

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

구구단 만들기

구구단 질문

해결된 질문

작성

·

315

0

 안녕하세요 나도코딩님

 

public class Main{
    public static void main(String[] args) {
        for (int i = 2; i <= 9 && 1 <= i; i++) {
            for (int j = 1; j < 10; j++) {
                System.out.println(i + " * " + j + " = " + (i * j));
            }
        }
    }
}

N은 1보다 크거나 같고 9보다 작거나 같다일때

N*1 부터 N*9까지 출력하는 문제를

for이중 반복문을 이용해서 이렇게 정답을 써봤는데

9보다 작거나 같은건 범위를적을때쓰면 되는거같은데

저렇게 1 <= N <=9 이런 범위일땐 어떻게 해야하는건지 모르겠네요..

답변 1

0

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
문제에서 원하는 것은 2를 입력하면 2단을, 3을 입력하면 3단을 출력하는 것입니다. 하지만 작성하신 코드는 구구단 전체를 출력하고 있어서 문제의 의도와는 조금 다른데요. for 반복문 내에서 1 <= N <= 9 를 의도하신 i <= 9 && 1 <= i 는 아주 잘 하셨습니다. i 가 1보다 크거나 같고 9보다 작거나 같다를 표현하신 것이므로 이는 맞습니다. 다만 코드를 아래와 같이 변경하게 되면 더욱 문제에서 원하는 형태의 결과를 얻으실 수 있을겁니다.

int N = 2; // 2단 출력
if (1 <= N && N <=9) {
    for (int i = 1; i <= 9; i++) {
        System.out.println(N + " * " + i + " = " + (N * i));
    }
} else {
    System.out.println("입력값이 잘못되었습니다. (1 <= N <= 9)");
}

N 에 2를 넣으면 실행 결과는 이렇습니다.

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

N 에 0을 넣으면 실행 결과는 이렇습니다.

입력값이 잘못되었습니다. (1 <= N <= 9)

하지만 실제 코딩 테스트 입장에서 본다면 입력값의 범위가 1 <= N <= 9 라는 게 전제 조건이므로, 당연히 1보다 크거나 같고 9보다 작거나 같은 수만 입력된다는 가정 하에 코드를 작성하시면 됩니다. 아마 이런 정도로 작성하시면 될 것 같아요.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        for (int i = 1; i <= 9; i++) {
            System.out.println(N + " * " + i + " = " + (N * i));
        }
    }
}

이해에 도움되시길 바라겠습니다.
감사합니다 😊

김민준님의 프로필 이미지
김민준
질문자

맨밑 사진쪽에 Scanner sc 부분은 첨보는데

강의를보다보면 나오는부분인건가요??

구글링하면 답이 다 스캐너가 포함되어있더라고요..

나도코딩님의 프로필 이미지
나도코딩
지식공유자

네, Scanner 는 사용자로부터 입력을 받기 위해 사용되며 코딩 테스트에서는 거의 필수적으로 사용되는 문법입니다. 나도코딩 자바 기본편 강의의 맨 뒷쪽에서 자세히 설명됩니다 😊
감사합니다.

김민준님의 프로필 이미지
김민준

작성한 질문수

질문하기