코딩 공부

[백준] 2563번 - 색종이 (Java)

ZZJJing 2020. 8. 5. 00:29

 

스터디 2일 차까지도 힘든 문제.. 

아 이중 x,y 대입만 생각해냈더라면 좋았을 텐데!!

 

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net

 

문제

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.

입력

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다

출력

첫째 줄에 색종이가 붙은 검은 영역의 넓이를 출력한다.

예제 입력 1 복사

3 3 7 15 7 5 2

예제 출력 1 복사

260

출처

Olympiad 한국정보올림피아드 한국정보올림피아드시․도지역본선 지역본선 2007 초등부 2번


문제를 보고 

무슨 말인지 전혀 감이 안 왔다. ಠ_ಠ

 

 

잘하는 친구가 힌트를 줬다. 

1. 컴퓨터처럼 생각할 것 

2. 어렵게 생각하지말 것. 

 

무슨 말인지 모르겠어서 2차 힌트 

+ 2차 배열을 사용한다.
(ᵒ̌▱ᵒ̌)

 

------------------------

 

[풀이]

-기준이 100 * 100이니깐  [100][100] 짜리 배열을 만들었다. 

-입력받은 x,y을 인덱스로 잡아서 값을 = 1로 변경한다. 

-그리고 x + 10 , y + 10 해서 돌 때까지 값을 추가한다. (색종이 길이가 10cm이니깐.) 

 

그리고 

-이 배열을 풀면서 

-인덱스 x,y 의 자리에 있는 값이 1 인 것들만 빼서 그 수를 계산한다. 

-그에 맞는 배열만 다 더하면 넓이가 된다. 

 

 

 

x와 y 좌표는 달라도 상관없음. 양쪽이 다 100 * 100 인 도화지라서..

 

 

for문을 이렇게 작성한 친구도 있었당

 

 

그리고 인덱스 값을 1로 넣었는데, 

true/false 두 가지라서 보통 boolean [] 배열로 만드는 것이 좋다고 한다. 

 

 

맨 처음 구구단밖에 기억이 안 나서 

배열을 풀어서 =1 값 찾는 거는 처리했는데 

인덱스를 +10으로 입력할 때, 

int j = x의 값을 넣고 x + 10을 하는 걸 응용하지 못해서 (ू˃̣̣̣̣̣̣︿˂̣̣̣̣̣̣ ू)

살짝 도움을 받아야만 했다.

 

 

더욱 분발 분발!!