벌집을 잘 보면,
한 층씩 올라갈수록 방의 총 개수가 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);
}
}
}
'[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 |