알고리즘/백준

백준 2292번 벌집 자바 / 백준 단계별로 풀어보기 7단계 / 7. 기본 수학 1

김발자~ 2022. 9. 11. 15:54
반응형

백준 7단계 2번 문제 - 2292 벌집

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

 

2292번: 벌집

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌

www.acmicpc.net

 

 

 


7. 기본 수학 1

(2) 백준 2292번 문제

벌집

 

문제

 

 

과정 생각해보기

이렇게 한줄당 숫자의 개수가 6씩 늘어나는 것을 볼 수 있다

 

개수 구하는 공식은 개수 = 끝수 - 첫번째수 + 1

 

2부터 시작해서 6개씩은 2개 → 끝수 - 2  + 1 = 6(6*1(count)) → 끝수 = 6 + 1 = 7

그 끝수부터 12개씩은 3개 → 끝수 - 7 - 1 + 1 = 12(6*2) → 끝수 = 12 + 7 = 19

그 끝수부터 18개씩은 4개 → 끝수 - 19 -1 + 1 = 18(6*3) → 끝수 = 18 + 19 = 37

 

우리가 구하고 싶은 답은 count + 1

 

또한 끝수들은 6의 배수씩 차이난다

 

라고 보면 된다

 

 

오답

배열 크기는 어떻게 해야할지 몰라서 당연히 저것보단 적겠지만 문제에서의 최대수를 입력했다

위같은 코드를 쓰면 아래와 같은 계산 방식을 거쳐 도출할 수 있을 것 같은데,

if문에서 <= 를 쓸 수 없다며 The operator <= is undefined for the argument type(s) boolean, int 오류가 떴다

 

너무 값이 크다는 오류도 뜨길래 임의로 배열 크기의 자리수만 하나 적게 넣어주고;

n과의 크기 비교도 항을 나누어 적어줬는데 이러면 답이 이상하게 나온다

 

백준에는 시간초과나 메모리초과가 뜬다

 

 

 

정답 인정 코드

찾은 규칙은 같은데 식을 간략화하는 게 아직 어렵다

이게 알고리즘의 핵심일텐데..~!

 

 

 

직후 백지 복습

 

 

 

 


 

반응형