문제
https://www.acmicpc.net/problem/18883
작성한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int num = 1;
for(int i=0; i <= n; i++){
for(int j=0; j <= m; j++){
if (num % m == 0) {
System.out.printf(num + "");
num+=1;
System.out.println("");
}
if(num <= n*m) {
System.out.printf(num + "");
num++;
}
}
}
sc.close();
}
}
코드 설명
안녕하세요! 코드는 문제가 없으나 시간 초과가 나더라구요.......
1~12의 값을
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
의 형태로 출력하는 문제입니다.
행의 역할을 하는 n 의 값과 열의 역할을 하는 m 의 값을 입력으로 받아오고
1~12를 출력하기 위해 num 변수를 사용했습니다.
반복문으로 입력받아온 행, 열의 값까지 순환하도록 i 와 j 의 값을 설정해주었고,
열을 출력하는 반복문 j 안에
-
첫 번째 조건문
조건문으로 숫자(num)의 값이 4 로 나누었을 때
나머지가 0 일 경우에 4를 출력(printf)한 후
숫자가 5가 되면 개행이 되도록 작성하였고,
-
두 번째 조건문
숫자(num) 의 값이 n*m 한 값 (=12) 까지 출력해야 하므로
조건문을 설정해주었습니다.
시간 초과의 문제가 무엇인지 모르겠어서 조금 더 코드를 줄이려고
첫 번째 조건문에서
4를 출력후 숫자의 값을 1을 더하는 코드에서
System.out.printf(num + "");
부분의 코드를 뺐더니
4의 값이 사라집니다...ㅠㅠ
도움을 주신다면 너무 감사할 것 같습니다...ㅠ
Help JAVA