정리
백준 1024번: 수열의 합 본문
백준 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/2 - 0.5) 값이 음이 될 때를 탈출 조건으로 설정하지 않으면 음의 정수가 포함된 리스트가 출력될 수 있기 때문입니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
'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