정리

백준 1024번: 수열의 합 본문

Programming/백준 BOJ

백준 1024번: 수열의 합

H.J.Park 2020. 7. 10. 05:44

백준 1024번: 수열의 합

 

- q = N / L, N을 L로 나눈 값을 q라고 지정해 주었습니다. 그 후 L이 짝수인 경우와 홀수인 경우로 나누어서 코드를 짰습니다.

 i) L = 짝수

   만약 q를 1로 나눈 나머지가 0.5이면 해당 리스트를 출력합니다.

ex) N = 18, L = 4, q = 4.5

3, (q-1.5) 4, (q- 0.5) 5, (q+0.5) 6, (q+1.5)

ii) L = 홀수

   만약 q를 1로 나눈 나머지가 0이면, q가 정수이면 해당 리스트를 출력합니다.

ex) N = 18, L = 3, q = 6

5, (q-1) 6, (q) 7, (q+1)

 

-while문의 탈출 조건은 L이 100을 초과하거나 q - (l/2 - 0.5) 값이 음이 되면 탈출합니다.  q - (l/0.5) 값이 음이 될 때를 탈출 조건으로 설정하지 않으면 음의 정수가 포함된 리스트가 출력될 수 있기 때문입니다.

 

import java.util.Scanner;
public class Main {
public static void print(double q, double l){
for(double i = q - (l/2 - 0.5); i < q + (l/2 + 0.5); i++)
System.out.printf("%.0f ", i);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 입력
double n = sc.nextDouble();
double l = sc.nextDouble();
double q = 0;
double a = 0;
// 2. while문으로 확인
while(true){
q = n / l;
// while문 탈출조건
if(l > 100){
System.out.println("-1");
break;
}
else if(q - (l/2 - 0.5) < 0){
System.out.println("-1");
break;
}
// 판별-홀수
if(l % 2 == 1){
if(q % 1 == 0){
print(q, l);
break;
}
}
//판별-짝수
else if(l % 2 == 0){
if(q % 1 == 0.5){
print(q, l);
break;
}
}
l++;
}
sc.close();
}
}
view raw BOJ_1024.java hosted with ❤ by GitHub

'Programming > 백준 BOJ' 카테고리의 다른 글

백준 10845번: 큐  (0) 2020.07.19
백준 10828번: 스택  (0) 2020.07.11
백준 1010번: 다리 놓기  (0) 2020.07.08
백준 13305번: 주유소  (0) 2020.07.06
백준 2485번: 가로수  (0) 2020.07.06
Comments