[백준 JAVA] 2292번 풀이 - 벌집
by mini_minimport java.io.IOException;
import java.util.Scanner;
/**
* 2292번 풀이
* 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다.
* 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지
* 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오.
*/
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 1;
//1+(무조건1) 2~7 8~19 20~37 38~61
// 6 차이 12 18 23 (6씩 차이남)
int max = 1;
//i는 차이
for ( int i = 6; 1000000 > i; i = i + 6){
if ( n == 1 ) {
break;
}
if ( n > max ){
max = max + i;
count++;
}
else if ( n < max ){
break;
}
}
System.out.println(count);
sc.close();
}
}
풀이
룰을 알면 아주 간단한 문제!
벌집의 테두리를 둥글게 이어보면, 한 테두리에 6개의 방이 감싸지는걸 알 수 있다.
1번 방
2~7번 방
8~19번 방
20~37번 방....
for 문으로 각 테두리의 가장 큰 숫자의 방을 넘지 않는 범위를 구해서 풀었다.
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 1193번 풀이 - 분수 찾기 (0) | 2023.07.27 |
---|---|
[백준 JAVA] 2869번 풀이 - 달팽이는 올라가고 싶다 🔥다시🔥 (0) | 2023.07.26 |
[백준 JAVA] 25206번 풀이 - 너의 평점은 (Hashmap 활용) (0) | 2023.07.25 |
[백준 JAVA] 1316번 풀이 - 그룹 단어 체커 (0) | 2023.07.24 |
[백준 JAVA] 24267번 풀이 - 알고리즘 수행시간 6 (0) | 2023.07.19 |
블로그의 정보
개발자 미니민의 개발로그
mini_min