본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:8,기본수학1,JAVA)2292번, 벌집

by 열정적인 이찬형 2021. 12. 28.

문제 링크

2292번: 벌집
 
www.acmicpc.net
 

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

  • BufferedReader를 사용하여 입력 값을 받았습니다.
  • 벌집을 구하는 honeyComb 함수를 만들었습니다.
  • 방이 커질 때마다 범위가 6씩 증가하는 등차수열이다.
  • 범위를 6씩 증가하여 숫자에 더한 뒤에 비교하여 몇 개의 방을 지나가는지 확인하였습니다.
  • honeyComb함수에 결과를 result에 받았습니다.
  • result bw에 저장하였습니다.
  • BufferedWriter를 통해 저장된 결과를 출력하였습니다.

결과 코드

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //입력 값을 받는 BufferedReader
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //결과를 출력하는 BufferedWriter
        long num = Integer.parseInt(br.readLine());	//입력값 저장
        long result = honeyComb(num);			//함수 결과 저장
        bw.write(result + "\n");			//결과 bw에 저장
        bw.flush();					//결과 출력
        bw.close();
        br.close();
    }
    public static long honeyComb(long num) {		//벌집 구하는 함수
    	long result=1;					//결과
    	long start = 1;					//비교하는 수
    	long plus = 0;					//start에 더하는 수
    	if(num==1)					//받은 숫자가 1일 때 1 반환
    		return 1;
    	else {
    		for(;;) {				//무한 반복 for문
    			plus += 6;	
    			start+=plus;
    			result++;
    			if(num<=start)
    				break;
        	}
    	}
    	return result;
    }
}

댓글