다희의 코딩 성장일기
[정올 Begginer_Coder - 도형만들기1] 1338.문자삼각형_자바JAVA 본문
문제 : 정올 1338.문자삼각형
문제 링크 : www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2074&sca=2010
입출력
풀이
< 접근 방법 및 풀이 >
- 알아보기 쉽게 배열 인덱스 1부터 시작. 행과 열값이 둘다 변화
- ex ) n = 5 일때,
1 | 2 | 3 | 4 | 5 | |
1 | A | ||||
2 | B | ||||
3 | C | ||||
4 | D | ||||
5 | E |
- 배열이 그려진 순서대로 행, 열을 나열해보면 다음과 같이 변화하는 걸 알 수 있다. / 대각선 모양으로 진행
첫번째 - A ( 1, 5) B ( 2, 4) C ( 3, 3) D ( 4, 2) E ( 5, 1)
두번째 - F(2, 5) G (3, 4 ) H ( 4, 3) I (5, 2)
.
.
. 다섯번째 ~ 나머지 생략
-> 즉, 총 반복은 크게 5번 반복하고, 행의 시작은 1부터 5까지, 열은 5열부터 ~ 1열까지
다만 반복하는 횟수가 첫번째는 5번 배열에 값을 집어 넣고, 두번째는 4번, 3번째는 3번 이렇게 줄어든다.
< 주의할 점 >
- 배열은 널값(‘\0’, 0)으로 초기화 하고 출력할 때 널값인 경우 공백을 출력하면 된다.( 맞게 풀고 런타임 에러나서 한참 찾아봤는데 이런 출력 조건을 놓침..)
JAVA코드
package 도형만들기1;
import java.util.Scanner;
public class 문자삼각형1_1338 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
char arr[][] = new char[n + 1][n + 1];
char c = 'A';
int k = 1;
// 값 넣기
for (int i = 1; i <= n; i++) { // n번 반복
int r = i;
for (int j = n; j >= k; j--) {
arr[r][j] = c;
c++;
r++;
if(c > 'Z') c = 'A';
}
k++;
}
// 출력
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if(arr[i][j] == '\0') arr[i][j] = ' '; // ** 널값 처리 주의하기!
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
REVIEW
200ms 나온 사람들은 어떻게 구현했을까,,?
더 열심히 해야지.
'Algorithm > 정올' 카테고리의 다른 글
[정올 Begginer_Coder - 수학1] 1692.곱셈_자바JAVA (0) | 2020.12.13 |
---|---|
[정올 Begginer_Coder - 도형만들기1] 1339.문자삼각형2_자바JAVA (0) | 2020.12.10 |
[정올 Begginer_Coder - 도형만들기1] 1314.문자사각형2_자바JAVA (0) | 2020.12.10 |
[정올 Begginer_Coder - 도형만들기1] 1307.문자사각형_자바JAVA (0) | 2020.12.10 |
[정올 Begginer_Coder - 도형만들기1] 2046.숫자 사각형4_자바JAVA (0) | 2020.12.10 |
Comments