[JAVA][정올 1338] 문자 삼각형1 -
- 알고리즘
- 2020. 12. 20.
SHORTCUT
반응형
사이트명 | 정올 |
문제 링크 | jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2074&sca=20 |
주요 알고리즘 | #for #구현 |
사용 언어 | JAVA |
1. 문제
2. 입력 / 출력
3. 풀이
3-1. 생각 노트
1. 어떤식으로 문자가 입력되는지 순서 파악이 중요
2. 순서대로 좌표를 입력하다 보면, 특정한 규칙이 보임
3. 해당 규칙대로 하였을 때, 어떻게 2차원으로 표현할지 고민
4. char[][] 의 기본값은 없다! 따라서, 공백으로 초기화를 해줘야 한다.
5. 알파벳을 65부터 숫자대로 안넣으면, 배열에 하나씩 다 넣어줘야 한다... 끔ㅈ찍..
3-2. 변수명
변수명 | 설명 |
int text | 대문자 A 를 유니코드로 하면 65 / Z는 90이다. 즉 65부터 (char)로 형변환해서 넣으면 자동으로 대문자가 삽입된다. |
int temp | 입력이 끝난 후에 1씩 증가하여 알파벳을 증감하기 위함 |
char[][] res | 결과값이 들어가는 2차원 char 배열 |
3-3. 코드 보기
package jungol;
import java.util.Scanner;
public class JO1338_문자삼각형1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
char[][] res = new char[N][N];
// char 2차원 배열의 기본값은 없으므로, 공백을 셋팅해주기
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
res[i][j] = ' ';
}
}
// char에서 A(65) ~ Z(90)
int text = 65;
int temp = 0;
for (int row = 0; row < N; row++) {
for (int i = 0; row+i < N; i++) {
res[row+i][N-1-i] = (char) (text+temp%26); // 알파벳 개수 만큼 반복되도록
temp++;
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(res[i][j] + " ");
}
System.out.println();
}
}
}
3-4. 마무리
이런 구현 문제는 기업 공채 문제로 나올 수준은 아니지만, 이것들이 활용되는 문제가 출제되는 것 같다. 특히, 이번 삼성 코테에서 달팽이를 활용한 문제가 그렇다(백준 20057). 실제로 나는 달팽이 그리는 걸 까먹어서, 달팽이 어찌 할지 고민하다 포기하고 1솔만 했다..
즉, 이런 도형 구현은 알고 구현 문제에서 밑바탕으로 나올 수 있다는 것!
도저히 모르겠을 땐, 직접 좌표를 찍어가며 어떤 규칙으로 되는지 파악하는게 중요한 것 같다.
사실 설계를 다 끝내고 바로 코딩으로 끝내야하는데, 이런 문제는 대충 감만 파악하고 곧장 코딩으로 들어가서 우다다다 푸는 것 같다..
그렇게 복잡한 구현은 아니라서 계속 변수 바꿔가며 풀리긴 하니까.. 괜찮겠지 뭐..
반응형