2738 행렬 덧셈
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int[][] array = new int[a][b];
int[][] array2 = new int[a][b];
int[][] array3 = new int[a][b];
for (int i=0; i<a;i++){
st = new StringTokenizer(br.readLine(), " ");
for (int j=0;j<b;j++){
array[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i=0; i<a;i++){
st = new StringTokenizer(br.readLine(), " ");
for (int j=0;j<b;j++){
array2[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i=0; i<a;i++){
for (int j=0;j<b;j++){
array3[i][j] = array[i][j] + array2[i][j];
}
}
for (int i=0; i<a;i++){
for (int j=0;j<b;j++){
System.out.print(array3[i][j] + " ");
}
System.out.println();
}
br.close();
}
}
정석대로 풀었다.
자바 배열은 위와같이 선언하고 초기화한다. default는 0.
부분만 초기화하고 싶다면 Arrays.fill() 메서드를 이용할 수도 있다. 쓸 일이 있나?
2566 최댓값
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//int[][] array = new int[9][9];
int x=0;
int y=0;
int max=0;
for (int i=0; i<9;i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for (int j=0;j<9;j++){
int n = Integer.parseInt(st.nextToken());
if (n>max){
max=n;
x=i;
y=j;
}
}
}
System.out.println(max);
System.out.println((x+1) + " " + (y+1));
}
}
굳이 2차원 배열을 선언하지 않아도 값을 받자마자 바로 비교하면 더 빠르다.
10798 세로읽기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = new String[15];
Arrays.fill(arr, "");
for(int i=0;i<5;i++){
String st = br.readLine();
for (int j=0;j<st.length();j++){
arr[j]=arr[j]+Character.toString(st.charAt(j));
}
}
for (int i=0;i<15;i++){
if (arr[i]==null)
break;
else
System.out.print(arr[i]);
}
}
}
코드 자체는 어렵지 않은데 문자열 배열을 선언하면 default로 null로 처리돼서 null값이 합쳐지는 점이 어려웠다.
Arrays.fill(arr, ""); 이 메서드를 이용해서 공백 문자열로 전부 바꿔둠.
또 빈 문자열은 isempty() 말고 null이랑 비교해서 처리해야 한다.
Arrays 사용하려면 import java.util.* 해주
2563 색종이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.io.IOException;
//import java.io.BufferedWriter;
//import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[][] arr = new int[100][100];
int n = Integer.parseInt(br.readLine());
for (int i=0;i<n;i++){
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a = Integer.parseInt(st.nextToken())-1;
int b = Integer.parseInt(st.nextToken())-1;
for (int j=a;j<a+10;j++){
for (int k=b;k<b+10;k++){
arr[j][k]=1;
}
}
}
int cnt=0;
for (int i=0;i<100;i++){
for (int j=0;j<100;j++){
if (arr[i][j]==1)
cnt++;
}
}
System.out.println(cnt);
}
}
풀이는 옛날꺼 배꼈다...ㅎ
수학적으로 접근하는게 아니라 그냥 넓이 체크용 100X100 2차원 배열 선언 후 색종이로 채워진 부분을 1로 바꿔주기!
코드는 딱히 어렵지 않다.
# 회고
생각해보니까 백준 카테고리를 따로 만들어서 백준이라고 말머리 붙일 이유가 없다.
사용한 언어 작성해야지. 이전것도 언젠가는...수정하겠지..?
'코딩테스트' 카테고리의 다른 글
[JAVA] 약수, 배수와 소수 (0) | 2024.01.22 |
---|---|
[JAVA] 일반 수학 1단계 (0) | 2024.01.19 |
[JAVA] 심화 1 (0) | 2024.01.17 |
[JAVA] 문자열 (0) | 2024.01.16 |
[JAVA] 1차원 배열 (0) | 2024.01.14 |