728x90
벌집 모양을 보면
6, 12, 18, 24 ...
6*n씩 증가하는 수열이다.
그리고, 값의 범위도, 직전의 값 + 1 ~ 진전의 값 + (6*n) 이다.
값의 범위안에 있으면, 최단거리는 같은 n값을 가진다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int input = Integer.parseInt(bf.readLine());
int s = 1;
int n = 1;
while(n < 166667) {
if ( 1 == input) {
System.out.println(s);
return;
}
else if ( s < input & input <= s+(6*(n-1))) {
System.out.println(n);
return;
}
s = s+(6*(n-1));
n++;
}
}
}
처음에 이렇게 작성을 하였으나, 범위를 지정하지 않아도 되게끔 수정하였는데
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int input = Integer.parseInt(bf.readLine());
int s = 2;
int n = 1;
if ( 1 == input) {
System.out.println(1);
}
else {
while ( s <= input) {
s = s+(6*(n));
n++;
}
System.out.println(n);
}
}
}
벌집의 중앙값 1일때를 제외한 2부터 값이 시작되고, s+(6*n) 값이 input 값 보다 크면 값을 출력하게했다.
1
2~7
8~19
...
input 값이 20보다 크면 n값은 3이된다.
728x90
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준] 1463 1로 만들기 자바(Java) (0) | 2022.12.30 |
---|---|
Java - [백준] 1929 소수 구하기 (2) | 2022.09.30 |
Java - [백준] 1316 그룹 단어 체커 (0) | 2022.09.23 |
Java - [백준] 1157번 단어공부 (0) | 2022.09.20 |
Java - [백준] 3052번 나머지 (0) | 2022.09.09 |
댓글