반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[수학] 백준 - 벌집 본문
728x90
반응형
https://www.acmicpc.net/problem/2292
-문제해설
1일 때는 벌집 1개
2부터 7까지는 벌집 2개
8부터 19까지는 벌집 3개
20부터 37까지는 벌집 4개
38부터 61까지는 벌집 5개
.
.
.
이 필요하므로 d라는 배열에 벌집수를 저장한다. d[1]=1, d[2]=7, d[3]=19, d[4]=37, d[5]=61
규칙을 확인해보면 d[i]=d[i-1] + 6*(i-1) 인 것을 알 수 있다.
d[6]을 구해보면 d[6] = d[5] + 6*5 = 61 + 30 = 91 임을 알 수 있다.
이제 입력받은 n값이 d[i]보다 작다면 i값을 출력해주면 된다.
입력받은 n 값이 58일 경우 d[5]인 61보다 작으므로 5를 출력하면 된다.
자바에서는 while문 조건에 n이 d[i]보다 크면 while문 안의 코드를 실행한다.
while문 안의 코드는 d[i+1]값을 추가하는 내용이 들어가있다.
n이 d[i]보다 작다면 while문을 실행하지않고 i를 출력한다.
-자바
package implementation;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class BJ2292 {
private static BufferedWriter bw =
new BufferedWriter( new OutputStreamWriter(System.out));
private static int n, sum;
private static ArrayList<Integer> d = new ArrayList<Integer>();
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt( br.readLine() );
d.add( 0 );
d.add( 1 );
sum = 1;
int i = 1;
while( n > d.get(i) ) {
d.add( d.get(i) + (6*i) );
sum++;
i++;
}
bw.write( sum + "\n" );
bw.flush();
bw.close();
br.close();
}
}
-파이썬
n = int(input())
d = [0, 1]
i = 1
while n > d[i]:
d.append( d[i] + (6*i) )
i += 1
print( i )
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[브루트포스] 백준 - 블랙잭 (0) | 2021.07.23 |
---|---|
[수학] 백준 - 부녀회장이 될테야 (0) | 2021.07.23 |
[브루트포스] 백준 - 분해합 (0) | 2021.07.22 |
[수학] 백준 - ACM호텔 (0) | 2021.07.22 |
[수학] 백준 - 직각삼각형 (0) | 2021.07.22 |
Comments