프로그래밍/코딩테스트

[백준] 2차원 배열 문제집 (완료)

코드몬스터 2024. 11. 19. 10:33
728x90

 

 교훈: 문제를 자세하게 읽자..

 

문제집

★는 다시 풀어야 하는 문제 입니다.

2738번: 행렬 덧셈

import java.util.*;
import java.io.*;

public class Main {

    public static void main (String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        // 행렬 만들기
        int[][] arrayA = new int[N][M];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < M; j++) {
                int number = Integer.parseInt(st.nextToken());
                arrayA[i][j] = number;
            }
        }

        int[][] arrayB = new int[N][M];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < M; j++) {
                int number = Integer.parseInt(st.nextToken());
                arrayB[i][j] = number;
            }
        }

		// 행렬 더하기
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                bw.write(arrayA[i][j] + arrayB[i][j] + " ");
            }
            bw.write("\n");
        }

        bw.flush();

    }
}

 

 

2566번: 최대값

문제에서 81개의 자연수 또는 0이라고 명시를 해놓았는데..

왜 int max = Integer.MIN_VALUE; 를 사용해야 되는지 이해가 되지 않는다.

import java.util.*;
import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int max = Integer.MIN_VALUE;
        int row = 0;
        int column = 0;
        for (int i=1; i<=9; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j=1; j<=9; j++) {
                int number = Integer.parseInt(st.nextToken());
                if (number > max) {
                    max = number;
                    row = i;
                    column = j;
                }
            }
        }

        bw.write(max + "\n");
        bw.write(row + " " + column);

        bw.flush();
    }
}

 

 

★ 10798번: 세로읽기

  • 고민하다가 결국 정답을 봤따...
import java.util.*;
import java.io.*;

public class Main {

    public static void main (String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 이렇게도 할 수 있네...
        String[] lines = new String[5];
        for (int i = 0; i < 5; i++) {
            lines[i] = br.readLine();
        }


        for (int i=0; i<15; i++) {
            for (int j=0; j<5; j++) {
                if (i < lines[j].length()) {
                    bw.write(lines[j].charAt(i));
                }
            }
        }
        
        bw.flush();

    }
}

 

 

  2563번: 색종이

  • 고민하다가 결국 정답을 봤따...
import java.util.*;
import java.io.*;

public class Main {
    
    public static void main (String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int[][] answer = new int[100][100];
        
        int N = Integer.parseInt(br.readLine());
        for (int i=0; i<N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            
            // 주어진 색종이 크기만큼 1로 색칠
            for (int j=x; j<x+10; j++) {
                for (int k=y; k<y+10; k++) {
                    answer[j][k] = 1;
                }
            }
            
        }
        
        int sum=0;
        for (int i=0; i<100; i++) {
            for (int j=0; j<100; j++) {
                if (answer[i][j] == 1) {
                    sum++;
                }
            }
        }
        
        bw.write(sum + "");
        bw.flush();
    }
    
}