본문 바로가기
프로그램/C언어 1000제

C언어 176제] 2004년 ICPC 서울지역본선 B번 벌집

by 건티 2024. 9. 20.
728x90

출처 : 반크_세계유산 경복궁

 

문제]

위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.

입력
첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

출력
입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

예제 입력 1 
13
예제 출력 1 
3

출처 : 백준_2292번

 

참고풀이]

#include <stdio.h>

int main()
{
   int N;//방번호를 입력받는 변수.
   int count;//방개수를 구하는 변수. 
   int cnt;//계속 실행여부 체크하는 변수 

   scanf("%d",&N);
   //벌집 육각형을 둘레로 N이 몇번째 방에 있는 지 구한다.
   if(N>=1 && N<=1000000000)
   {
      count=cnt=1;
      if(N==1);
      else
      {
         while(1)
         {
            cnt+=6*count;
            count++;
            if(cnt>=N) break;
         }
      }
      //결과출력
      printf("%d",count);
   }

   return 0;
}

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

 

반응형

댓글