◎ 자료구조와 알고리즘/백준(BOJ) 문제풀이

[백준 / BOJ] 2477번 참외밭 (C++, Python)

reo91004 2022. 6. 3. 20:30
반응형

링크 : https://www.acmicpc.net/problem/2477

 

2477번: 참외밭

첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지

www.acmicpc.net


문제


문제 풀이

나는 좀 다르게 풀었는데, 정석적인 방법은

"육각형이므로 가로, 세로의 최댓값이 나온 시점에서 '가로의 index에서 +3, +4 index의 요소들이 작은 사각형의 가로, 세로'" 라고 한다.

 

그림을 그려보니 아~ 그렇네 싶지만 솔직히 어떻게 발견하나 싶다. 일단 알아만 두어야겠다.

 

point라는 별개의 배열을 만들어서 동서남북이 1, 2, 3, 4로 주어진다 했으니 카운트를 해 주었다. 한 번씩 나온 length는 가장 긴 변일 테니 곱한다.

 

4 50
2 160
3 30
1 60 3과 3 사이!
3 20 1과 1 사이!
1 100

 

예시를 보면 규칙을 알 수 있는데, 중복인 방위 사이의 요소가 작은 사각형의 요소라는 것을 알 수 있다. 사실 다른 육각형도 그려보면서 시행착오로 알아냈다. 실버 3 문제가 맞나 싶다.. 어찌되었건 그래서 위에서 색칠한 부분이 작은 사각형의 요소이다.

 

파이썬은 count라는 좋은 메소드가 있어 조금 다르게 풀었는데, 근본적으로는 같은 아이디어다.

 

 

C++ 코드 전문

 

Python 코드 전문

 

소감

 

반응형