🐣 알고리즘 삐약/💻 백준 삐약

2 삐약 : 백준 2292 [Python]

우주수첩 2022. 2. 18. 16:08
728x90

오늘도 어김없이 비어있는 머리로 삐약삐약 거리러 온 수첩이다.

오늘은 백준 2292번 벌집 문제를 해결하고자 한다. 

항상 문제를 접하고 이해를 시작하려 할 때마다 나의 사고력의 끝과 인사하고 온다.  하지만 알고리즘 문제를 직접적으로 접하기 시작한 게 얼마 되지 않았으니까 하는 위안 아닌 위안을하고 현실을 보러 가자.

 

어김 없이 문제를 보고 이게 무슨 말이야를 외친 삐삐약이는 문제자의 의도를 파악하려 애를 썼다.

 

처음에는 연결되어있는 벌집의 수와 관련이 있는 문제이지 않을까 하며 하나의 셀을 잡고 주변을 돌리면서 규칙을 파악 해 보려고 했으나 당연히 뭔가 있을 리가 없다.

 

가만히 보니 가운데 1-6-12- 18 ... 순으로 셀의 개수가 늘어나더라. 한 겹에 6의 배수만큼 늘어나는걸 어찌어찌 이 부화 안한 삐약이가 캐치했다!!! 이에 격한 감동을 받으며 이제 코드 작성을 해보고자 한다.

 

 

삐약삐약삐삐약 13을 입력하면 3이 나오고 58을 입력하면 5가 나온다. 근데

 

 

틀렸다!!!! ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 왜 틀렸는지에 대한 이유는 금방 찾았다.

 

1을 입력하면 2가 나온다.

냅다 쓸데 없이 웅장한 인용형식 하나 날려주고, 맘같아선 귀찮아서 그냥 if 문 써서 조건으로 바로  출력하고 싶은데 수식으로 한번에 끝낼 수 있는 방법을 생각하고 싶었다. 왜냐.  멋지잖아.

 

2차시도

 

 

 

생각해 낸 것은 조건문의 위치를 바꿔보자. 

1을 입력하면 1이 나오고 13을 입력하면 3이 나오고 58을 입력하면 5가 나온다.

아주 뿌듯함에 가득한 삐약이가 제출을 했는데

 

 

 

 

 

 

 

 

 

증말. 뭐가 문제일까. 항상 알고리즘 풀 때마다 나는 돌아가는데 뭐가 안된다고 한다.

방법을 다르게 생각을 해 보기로 했다. 주어진 수 N에서 정수를 빼면서 찾아가는 것이 아니라 1부터 더하면서 찾아가는 루트를 구현 해 보았다.

 

더해지는 값을 저장할 cell 변수를 선언한고, 증가하는 형식으로 구현 해 보았는데 왜 진작 이렇게 생각을 안해봤을까 할 정도로 훨씬 짧고 간결하게 구현 될 뿐만 아니라 

 

 

 

 

 

 

 

맞았다 심지어 . 그렇다면 뺄셈 형식으로 진행했던 구현에서는 어떤 문제가 있었을까?

 

 

 

이 코드도 틀렸다고 한다.

조건문에서 사용하는 기준을 바꿔보도록 하겠다. 처음 반복문을 진행하는 조건에서부터 N이 1일때의 조건을 걸어놓고 시작하면 조건문 하나를 줄일 수 있지 않을까 싶은 마음에 while 문에 N>1일때의 조건을 걸고 다시 풀이를 해 보았다.

 

 

 

 

 

 

 

 

 

 

 

 

 위에서 해결했던 풀이와 같은 시간 같은 메모리로 풀이에 성공해따!!!

조건문의 수를 줄여보고자 했던 시도가 통해따!!!! 야호!!

 

 

 

 

 

기본적인 문제에 이렇게 많은 고민을 하고 있는게 조금 본새가 안나긴 하지만 기본이 있어야 멋도 부릴 수 있기에 조금 더 열심히 알고리즘을 풀어나가다 보면 감을 익힐 수 있지 않을까?

 

오늘도 삐약 🐣🐣🐣

728x90