728x90
나는 너무 어려웠다 분해합처럼 숫자들을 다 쪼개서 그 수가 되는 값들을 (근데 그 가각의 숫자들의 증가폭은 6) 구하는 줄 알았다.
풀이를 좀 찾아봤는데
첫 번째 칸 : 1개 칸의 최댓값 : 1
두 번째 칸 : 6개 칸의 최댓값 : (1+6) =7
세 번째 칸 : 12개 칸의 최댓값 : (1+6+12) = 19
네 번째 칸 : 18개
.. 이런식으로 칸의 갯수가 6의 배수로 증가함
구해야하는 값인 몇 개의 칸을 짚고가는지 count 변수는 초깃값 1 (출발지 1도 포함이니까)
칸의 층을 나타내는 roomcnt도 1부터 시작 1이있는 1층부터 시작하니까
반복문은 들어온 숫자 num이 roomcnt보다 클 때까지 반복해서
반복문 안에는 roomcmt에 count*6을 더해나간다. (count*6은 층의 칸 수를 의미) 누적이 되어야하니까 더해나가야함.
package algorithm;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int count = 1; //이동한 층의 갯수
int roomnum = 1; // 칸의 층 1부터 시작이라 초깃값 1로 해줌
if(num==1) {
System.out.println(1);
}
while(num > roomnum) {
count++;
roomnum += (count*6);
}
System.out.println(count);
scanner.close();
}
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
7568번 문제 : 덩치 (0) | 2023.03.11 |
---|---|
4153번 문제 : 직각삼각형 (0) | 2023.03.10 |
2231번 문제 : 분해합 (0) | 2023.03.07 |
11651번 문제 : 좌표정렬 2 (0) | 2023.03.06 |
11650번 문제 : 좌표 정렬하기 (0) | 2023.03.06 |