= 내가 접근한 방법 ( 틀림 ) =
1. input 받기
2. 겹치는 색종이가 있으면 그 색종이는 총 넓이에서 제외한다.
ex) 3장의 색종이가 있으면 검은색을 차지하고 있는 최종 넓이는 100이다.
3. 겹친 색종이 구하기를 구하기
3-1. 먼저 x축이 겹치는 상태를 먼저 확인한다.
3-2. x축이 겹치는 색종이들만 따로 y축도 겹치는지 확인한다.
3-3. 그리고 최종 넓이에서 겹친 넓이를 빼준다.
이게 내가 한 방법이다. 코드로 한 번 보자.
1. 2차원배열에 x축과 y축을 다 저장했다.
2. 겹치는 색종이를 먼저 확인한다.
컬렉션 Set을 이용했다.
Set을 이용했다.
내가 이차원 배열을 이용해서 x축 y축을 저장했기 때문에 String으로 변환시켜준 후, 총 넓이를 구했다.
3. 어떤 색종이들이 x축이 겹치는지 먼저 찾는 과정이다.
참고로 count > 1인 이유는 동일 선상일 때를 제외하는 과정이다.
4. x축이 겹치는 인덱스 번호들만 딴 후,
y축이 겹치는지 확인하는 메서드다.
5. 얼마나 겹치는지 count로 확인 후 static 변수인 xLine에 다 저장을 한다.
6. 최종 wide에서 겹친 부분을 뺀다.
2차원배열에서 0보다 큰 값을 가지고있는 것들만 계산하는 과정이다.
난 이렇게 풀었는데 오답이 나왔다.
자세한 이유는 내가 이 코드를 분석하고 테스트를 더 해본 후에 수정하겠다.
= 구글링 후 해결한 과정 =
1. input받기
2. 문제에 도화지는 가로 100 세로 100이라고 주어졌다.
따라서 도화지를 먼저 이차원 배열 [101] [101]로 생성한다.
3. 색종이의 크기는 10x10의 크기다.
3 7 이라는 좌표가 주어졌다고 해보자
그러면 x는 3~ 13, y는 7 ~ 17이다.
여기서 이런 생각을 못했기 때문에 빙빙 돌아갔다고 생각한다.
2x2 배열이있다고 가정해보자
그럼 (0, 0) (0, 1) (1, 0) (1, 1)이렇게 생성이 되는데 이 배열의 갯수는 몇 일까? 4개다.
2x2 정사각형의 넓이는 몇 일까? 4다.
즉 배열의 크기만큼 넓이라고 생각하면 되는 거였다.
3 7이라는 값을 입력하면
3~13, 7~17까지 (3, 7) (3, 8) (3, 9) (3, 10) ........... (12, 16) 까지하면 100개니까 넓이가 100임을 알 수 있고
이걸 for문을 이용해서 wide의 값이 0일 때, 좌표에 맞게 1로만 수정해주면 된다.
값이 0일 때만 수정하기 때문에 겹칠 경우가 제외되는 것이다.
4. 결과 출력
배열에 1인 값을 다 더하면 최종 넓이를 구할 수 있다.
= 최종 코드 =
간단하게 풀 수 있는 문제였고, 어려운 문제가 아니였다.
내가 아직 경험도 부족하고 실력이 많이 부족함을 느낀다.
다른 사람의 코드때문에 시야도 넓어지고 다양한 풀이를 접해서 정말 좋지만
문제를 더 많이 접해보고 더 많이 풀어보고 다른 사람의 풀이를 보지 않아도 스스로 완벽하게 풀 수 있을때까지 더 열심히 노력해야겠다.