1. 내 코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// 도화지 만들기
String [][] arr= new String[100][100];
// 도화지 안을 전부 _로 채우기
for (int i = 0; i < 100; i++) {
Arrays.fill(arr[i], "_");
}
// 색종이 부분은 Y로 채우기
for (int i = 0; i < N; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int j = x; j < x+10; j++) {
for (int k = y; k < y+10; k++) {
arr[j][k] = "Y";
}
}
}
// Y의 수를 세면 색종이의 총 넓이가 나온다.
System.out.println( Arrays.stream(arr).flatMap(Arrays::stream).filter(s -> s.equals("Y")).count());
}
}
2. 배운 점
Arrays.fill(타겟배열, 채울 말)
채울 말로 타겟 배열에 다 채워진다.
flatMap
복잡한 자료 구조에 저장된 요소들을 내가 지정한 단순한 자료구조에 저장되도록 해준다.
flatMap(x -> Arrays.stream(x))로 했는데, 내가 처음 쓴 배열이 2차원 배열이라 x에는 2차원 배열의 원소들인 1차원 배열들이 들어가고, 그것을 1차원 배열의 Stream으로 바꿔줬다.
여기서 중요한 점은 2차원 배열의 원소를 전부 꺼내서 1차원 배열로 리턴해준다는 것이다.
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 11005번 진법 변환2 (0) | 2023.06.10 |
---|---|
백준 2745번 해답 (0) | 2023.06.08 |
백준 10798번 세로읽기 (0) | 2023.06.07 |
백준 2566번 최댓값 (0) | 2023.06.07 |
백준 2738번 행렬 덧셈 (0) | 2023.06.07 |