육각형을 이루어진 벌집에서 N번째 벌집으로 가기위해 몇개의 방을 지나쳐야 하는지 푸는 문제입니다.
이 문제를 풀기 위하여 일정하게 증가하는 값이 있는지 찾아 보았습니다.
육각을 기준으로 하여
첫 번째는 방이 1개
두 번째는 방이 7개 (안쪽을 제외하고 겉에 있는 방의 갯수는 6개)
세 번째는 방이 19개 (안쪽을 제외하고 겉에 있는 방의 갯수는 12개)
네 번째는 방이 37개 (안쪽을 제외하고 겉에 있는 방의 갯수는 18개)
방의 갯수가 6의 배수만큼 증가하는 것을 볼 수 있습니다.
1번 방에 가려면 1개의 방을 지나면 되고,
2~7 사이에 있는 방으로 가려면 두번,
8~19 사이에 있는 방으로 가려면 세번만 이동하면 됩니다.
tmp값을 1로주고, 1씩 증가하는 변수 i를 만들어 준 뒤
tmp+( 6 * i )의 값이 N보다 작거나 같으면 i의 값을 출력해 줍니다.
자바
import java .util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int tmp = 1,i=0;
while(true){
tmp+=6*i;
i++;
if(tmp>=N) {System.out.println(i);break;}
}
}
}
C언어
#include <stdio.h>
int main() {
int N,tmp = 1,i=1;
scanf("%d", &N);
while(1){
if(N<=tmp){
printf("%d",i);
break;
}
tmp+=6*i;
i++;
}
return 0;
}
'프로그래밍 > 백준알고리즘' 카테고리의 다른 글
백준 알고리즘 2869번 문제 풀이 - 달팽이는 올라가고 싶다 (0) | 2019.08.13 |
---|---|
백준 알고리즘 1193번 문제 풀이 - 분수 찾기 (0) | 2019.08.01 |
백준 알고리즘 2839번 문제 - 설탕 배달 (0) | 2019.08.01 |
백준 알고리즘 1978 문제 풀이 - 소수 찾기 (0) | 2019.07.30 |
백준 알고리즘 1712문제 풀이 - 손익분기점 (0) | 2019.07.30 |