문제 링크
https://www.acmicpc.net/problem/2292
나의 코드 (java)
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
// 찾을 방의 번호
int a = sc.nextInt();
int cnt = 1;
while (true){
if (a <= 1){
System.out.println(cnt);
break;
} else {
// 다음으로 갈수록 6의 배수만큼 더 빼줌
a -= cnt*6;
// 방의 개수 카운팅
cnt++;
}
}
}
}
벌집 1은 방의 개수가 1개 필요합니다.
벌집 2~7은 방의 개수가 2개 필요합니다.
벌집 8~19는 방의 개수가 3개 필요합니다.
이 차이를 보면 처음에는 1에서 2~7로 갈 때는 1~6이 증가했고 그다음 8~19로 갈 때는 1~12만큼 증가했습니다.
즉 방의 개수가 증가할 때마다 6의 배수만큼 증가하는 규칙을 발견할 수 있습니다. (1~6 → 1~12)
반복문을 통해서 입력값이 1보다 작거나 같아졌을 때 방의 개수가 정답이 됩니다.
만약 아직 목적지에 도달하지 않았다면 처음에는 6을 빼고 그다음에는 12를 빼고 그다음에는 18을 뺄 것입니다.
이러한 로직을 통해서 몇 개의 방이 필요한지 구할 수 있습니다.
'코딩공부 > 백준 (java)' 카테고리의 다른 글
[백준 2869] 달팽이는 올라가고 싶다 (java) (0) | 2021.07.27 |
---|---|
[백준 1193] 분수찾기 (java) (0) | 2021.07.26 |
[백준 1712] 손익분기점 (java) (0) | 2021.07.25 |
[백준 1316] 그룹 단어 체커 (java) (0) | 2021.07.18 |
[백준 2941] 크로아티아 알파벳 (java) (0) | 2021.07.17 |
댓글