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부터 시작하는 것에
익숙해지려 한다.
'IT story > Algorism' 카테고리의 다른 글
배열6 오른쪽에 빈 삼각형 만들기 (0) | 2016.09.04 |
---|---|
배열5 모래시계 채우기 (0) | 2016.09.04 |
배열4 다이아몬드 채우기 (0) | 2016.09.04 |
배열3 'ㄹ'자 채우기 (0) | 2016.09.04 |
배열1 기본 5행 5열 (0) | 2016.09.03 |