꾸물꾸물 졔의 개발공부
정올 1856 - 사각형 (JAVA) 본문

힌트를 본 문제, 힌트보기전에는 배열에 넣을 생각을 0.1초 했다가 바로 포기했다 .
[ 첫번째 문제해결 방법 ]
각 행에 대하여, 홀수행과 짝수행의 출력방식이 달라지는 걸 알 수 있다 .
짝수행 -> 제대로 출력 / 홀수행 -> 반대로 출력
조건제어문을 활용하여, 각각의 경우를 나누었다.
- - - 구구절절 풀이법 - - -
int index =1 ; int indexd; // ++ 과 -- 연산을 위해서, 값이 중구난방 되지 않게 하기 위해 변수 2개 설정
if(짝수행) { 열 길이만큼 반복하며 index++ 출력}
else ( 홀수행 ) { 짝수행에서 끝난 index ++ 값 에다가, m-1 만큼 더해서 새로운 변수 indexd 에 추가. ex) 첫번째 줄이 index ++ = 6 인채로 끝났으니, m-1 더해주면 10 ..... 1차원사고 헷
indexd는 다음줄을 위해 +1 해서, index에 넣어두고, indexd -- 하며 출력 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package jungol;
import java.util.Scanner;
public class jg_1856 {
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int index=1;
int indexd;;
for(int i=1; i<=n; i++) {
if(i%2==1) {
for(int j=0; j<m; j++) {
System.out.print(index++ + " ");
}
System.out.println();
}
else {
indexd=index+m-1;
index=indexd+1;
for(int j=0; j<m; j++) {
System.out.print(indexd-- + " ");
}
System.out.println();
}
}
}
}
|
cs |
자바나 모든 언어는 위에서 순서대로, 왼쪽부터 순서대로 출력이 되기 때문에, 그냥 바로 출력하려면 위와 같이 복잡해짐
그래서,
[ 두번째 문제해결 방법 ]
우선, 출력하고자 하는 순서대로 2차원 배열에 미리 넣어둔다.
{ { 1 , 2 , 3 , 4 , 5 }
, { 10 , 9 , 8 , 7 , 6 }
, { 11 , .... } ← 바로 출력하면 됨 .
배열에 숫자들을 출력순서대로 넣을 함수를 별도로 만들어서, 똑같이 짝수행과 홀수행을 구분하여 저장 .
짝수행일때에는 , arr[행][열 증가순] 대로 값 저장 /
홀수행일때에는, arr[행][열 감소순] 대로 값 저장
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package jungol;
import java.util.Scanner;
public class jg_1856_2 {
static int[][] fill(int n, int m) {
int arr[][]= new int [n][m];
int num=1;
for(int i=0; i<n; i++) {
if(i%2==0) { // 앞에서 부터 배열
for(int j=0; j<m; j++)
arr[i][j]=num++;
}
else { // 뒤에서 부터 배열
for(int j=m-1; j>=0; j--)
arr[i][j]=num++;
}
}
return arr;
}
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
int n= sc.nextInt();
int m=sc.nextInt();
int get[][]=fill(n,m);
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
System.out.print(get[i][j]+" ");
System.out.println();
}
}
}
|
cs |
→ fill() 함수로 배열에 값을 저장하고 배열을 리턴한다 .
main 함수에서 위의 배열을 받아서, 출력 하면 끝 ~