스터디 2일 차까지도 힘든 문제..
아 이중 x,y 대입만 생각해냈더라면 좋았을 텐데!!
https://www.acmicpc.net/problem/2563
문제
가로, 세로의 크기가 각각 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을 하는 걸 응용하지 못해서 (ू˃̣̣̣̣̣̣︿˂̣̣̣̣̣̣ ू)
살짝 도움을 받아야만 했다.
더욱 분발 분발!!
'코딩 공부' 카테고리의 다른 글
[백준] 1110번 - 더하기 사이클 (Java) (0) | 2020.08.26 |
---|---|
[백준] 1748번 - 수 이어 쓰기 1 (Java) (0) | 2020.08.11 |
[백준] 5585번 - 거스름돈 (Java) (0) | 2020.07.30 |
[백준] 2839번 - 설탕배달 (Java) (3) | 2020.07.29 |
[백준] 1924번 - 2007년 (Java) (0) | 2020.07.29 |