배열2 직각 삼각형 만들기
2016.09.04. Sun. 정보처리 산업기사 알고리즘
직각 삼각형 만들기에서는 배열의 행과 열의 위치를 잡는 연습이다.
각 도형의 시작과 끝을 파악하고, 시작위치와 끝나는 위치 증감여부를 파악해야한다.
아래의 세 가지 예제로 이해해보자.
※직각 삼각형 만들기
a. 왼쪽 직각 삼각형 만들기
1. 행은 1에서 5까지 증가한다.
2. 열은 1행(1→1), 2행(1→2), 3행(1→3), 4행(1→4), 5행(1→5) (증가)
즉, 시작 지점은 1 이지만, 끝나는 지점은 변하고 있다.
끝나는 위치를 살펴보면 행의 숫자처럼 증가 한다는 것을 알 수 있다.
(=끝나는 위치의 변수에 행의 값을 넣어준다)
예제
package example;
class Example{
int n = 5;
int row,col;
public void leftTriangle1(){
int array[][] = new int[n][n];
int num = 1;
System.out.println("\n 배열2 a.왼쪽 직각 삼각형");
for(int row=0; row<n; row++){
for(int col=0; col<=row; col++){
array[row][col]=num++;
}
}
for(row=0;row<n;row++){
for(col=0;col<n;col++){
System.out.printf("%3d",array[row][col]);
}
System.out.println();
}
}//leftTriangle1
b. 오른쪽 직각 삼각형 만들기
1. 행은 1에서 5까지 증가한다.
2. 열은 1행(5→5), 2행(4→5), 3행(3→5), 4행(2→5), 5행(1→5) (증가)
즉, 끝나는 지점은 5로 고정되어있지만, 시작 지점은 행과 반대의 수이다.
(=끝나는 위치의 변수에 행의 리버스 값을 넣어준다) (= n+1-(row))
예제
public void rightriangle1(){
int array[][] = new int[n][n];
int num = 1;
System.out.println("\n 배열2 b.오른쪽 직각 삼각형");
for(int row=0; row<n; row++){
for(int col=(n-1)-row; col<n; col++){
array[row][col]=num++;
}
}
for(row=0;row<n;row++){
for(col=0;col<n;col++){
System.out.printf("%3d",array[row][col]);
}
System.out.println();
}
}//rightriangle1
** 리버스 식이 설명과 다른 이유는 시작 지점이 0부터 이기때문.
C. 왼쪽 직각 삼각형 오른쪽부터 채우기
1. 행은 1에서 5까지 증가한다.
2. 열은 1행(1←1), 2행(1←2), 3행(1←3), 4행(1←4), 5행(1←5) (감소)
즉, 끝나는 지점은 1로 고정되어있지만, 시작 지점은 행의 숫자처럼 증가 한다는 것을 알 수 있다.
(=시작하는 위치의 변수에 행의 값을 넣어준다)
예제
public void leftTriangle2(){
int array[][] = new int[n][n];
int num = 1;
System.out.println("\n 배열2 c.왼쪽 직각 삼각형 오른쪽부터 채우기");
for(int row=0; row<n; row++){
for(int col=row; col>=0; col--){
array[row][col]=num++;
}
}
for(row=0;row<n;row++){
for(col=0;col<n;col++){
System.out.printf("%3d",array[row][col]);
}
System.out.println();
}
}//leftTriangle2
}//class
public class Algorism {
public static void main(String[] args) {
Example e = new Example();
e.leftTriangle1();
e.rightriangle1();
e.leftTriangle2();
}//main
}//class
JAVA를 시작한 지 한 달정도 밖에 안된 사람이라 1부터 시작과 0부터 시작에 대해 헷갈릴 수 밖에 없다고 생각한다.
특히, 우리나라는 태어나자마자 1살을 카운트하는 문화이기때문에 더더욱 0부터 시작하는 것이 어색하다.
보기좋게 1부터 시작하는 코딩을 해도 되지만, 0부터 연산을 시작하는 컴퓨터와 친해지기 위해 0부터 시작하는 것에
익숙해지려 한다.