자바(백준 2738번)

전민주·2023년 3월 18일

자바

목록 보기
4/5

📌 자바 배열 연습으로 푼 문제

백준 2738번 자료구조는 2차원 배열을 썼고 두 배열을 입력 받아서 새로운 배열에 성분을 더한 값을 저장해서 출력했다.

📌 더 알아 볼 부분

  1. 2차원 배열을 두 개를 잘 받아서 새로운 배열에 저장하고 또 for문을 돌면서 출력했다. 근데 for문이 너무 많고 코드도 쓸 데 없이 긴 것 같아서 다른 방법이 있는지 찾아봐야겠다.

해답은 나중에 아래에 추가하도록 하겠다.

사진은 내 코드랑 맞았습니다!! 인증이다.

📌 새롭게 알게 된 내용

  1. 배열의 크기 적는 방법 ➡️ 키보드로 입력받은 int 변수도 들어갈 수 있다.
    다른 분의 코드들을 보면서 알게 된 내용들이 있다.

scanner로 입력 받은 변수들을 바로 배열의 크기에 넣을 수 있다는 점이다. C언어에서는 안돼서 배열 크기 무조건 백준에 나와있는 입력 값의 최대치로 설정하고 진행했는데 이제부터는 고쳐야겠다.

그니까 아래의 코드가 실행 된다는 것이다.
int n = scanner.nextInt();
int m = scanner.nextInt();
int matrixA[][] = new int[n][m];

  1. 표면 상 두 개의 2차원 배열을 저장해야 하지만 결국 더해서 출력하는 것이므로 입력 받는 동시에 더해서 저장해 버리기 ➡️ 메모리를 아껴쓰자.

문제풀이적인 부분에서 나는 두 개의 2차원 배열을 다 따로 저장해서 또 새로운 3번째 2차원 배열을 만들어서 더했는데 다른 분 방식을 보니까 한 번에 입력 받아서 더해버리셨다.

나는 3개의 2차원 배열을 썼는데 이 분은 1개의 2차원 배열을 쓴 셈이다. 메모리적인 효율로 봐서 내가 꼭 수정해야 하는 부분이다.

for(int i=0;i<2*n;i++){
for(int j=0;j<m;j++){
matrix[i%n][j] += scanner.nextInt();
}
}

이렇게 구현을 하셨다.
같은 크기의 두 2차원 배열을 더하는 거니까 행 수만 %2로 구분해서 두 번째 열을 지정하는 for문을 돌 때 같은 인덱스에 또 입력 받아 +=로 더해버리기 까지 완료해서 출력할 결과 행렬만 저장하셨다.

  1. StringBuilder 라는 객체 사용

처음 보는 객체를 사용하셨는데 이건 나중에 다른 글에서 공부하고 기록하겠다.
링크도 여기에 달도록 하겠다.

profile
엉금엉금

0개의 댓글