https://www.acmicpc.net/problem/2292
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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 room=1, cnt=1;
while(n>room){ // n이 누적된 방의 수보다 클 때
n-=room; // 이전 방의 개수 빼주기
room=6*(cnt++); // 방의 개수
}
System.out.println(cnt);
}
}
지나가는 최소 개수의 방을 cnt라고 한다면 cnt번째 방의 개수는 6(cnt-1) 이다.
첫번째에는 1개, 두번째에는 6개, 세번째에는 12개 이런식으로 방이 있다.
while문을 돌며 입력받은 수가 어느 방에 속해있고 그 때의 cnt가 몇인지 찾으면 된다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1193번- 분수찾기 (0) | 2022.08.10 |
---|---|
[JAVA] 알고리즘 : DFS- 팩토리얼 (0) | 2022.08.09 |
[JAVA] 알고리즘 : DFS- 이진수 출력(재귀) (0) | 2022.08.08 |
[JAVA] 백준 1712번- 손익분기점 (0) | 2022.08.08 |
[JAVA] 백준 1065번- 한수 (0) | 2022.08.07 |