• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

구구단 질문

23.01.17 16:42 작성 조회수 285

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));
        }
    }
}

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

김민준님의 프로필

김민준

질문자

2023.01.18

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

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

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

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