

벌집을 잘 보면,
한 층씩 올라갈수록 방의 총 개수가 6*(층수)개씩 증가한다는 걸 알 수 있다.
이를 이용해서 방의 총 개수가 입력받은 N을 넘어갈 때까지 반복문을 돌렸다.
예를 들어 N이 13일 때, 2층은 방의 개수가 7이고 3층은 방의 개수가 19개가 된다.
그럼 N(17)은 3층의 방의 개수인 19보다 작으니, 3층에 있다는 걸 알 수 있는 것이다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int layer = 1; int rooms = 2; // 2층 이상일 때부터를 생각하는데, 방의 최소 개수는 2임 if(N==1) System.out.print(1); // N == 1이면 1층이니 1을 바로 출력 else{ while(N>=rooms){ // N보다 방의 총 개수가 많아질 때까지 반복함 rooms = rooms + 6*layer; // 방의 총 개수를 증가시킴 layer++; // 층을 증가시킴 } System.out.print(layer); } } }
'Algorithm > [BOJ] - JAVA' 카테고리의 다른 글
| [백준] 2869 : 달팽이는 올라가고 싶다 JAVA 풀이 (0) | 2022.05.17 |
|---|---|
| [백준] 1193 : 분수찾기 JAVA 풀이 (0) | 2022.05.17 |
| [백준] 1712 : 손익분기점 JAVA 풀이 (0) | 2022.05.16 |
| [백준] 1316 : 그룹 단어 체커 JAVA 풀이 (0) | 2022.05.16 |
| [백준] 2941 : 크로아티아 알파벳 JAVA 풀이 (0) | 2022.05.15 |