-
[코딩테스트] 백준(BAEKJOON) - 수들의 합(Java, 1789번)코딩테스트/백준 2023. 4. 21. 00:34728x90
안녕하세요~
이번에 풀어본 문제는 수들의 합 이라는 문제입니다.
쌓여있는 문제 하나씩 기록해나가면서 저도 복습해보는 시간이라 생각하고 있습니다.
그럼 바로 문제부터 만나보시죠~
https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
다음은 제가 작성한 코드입니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; import java.util.Scanner; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { Scanner sc=new Scanner(System.in); long number=sc.nextLong(); long index=1; while(true) { if(index*(index+1)/2<=number) index++; else break; } System.out.println(index-1); } }
여기서 핵심은
if(index*(index+1)/2<=number)
여기 부분입니다. 해당 내용에 대해서는 오래전~ 고등학교, 중학교 수학을 떠올려볼까요?
바로바로 1~N까지의 합 공식입니다.
N(N+1)/2 이 공식이었습니다. 저는 해당 공식을 합을 구해나갔고 합이 number보다 크다면 반복문 종료~!
그 다음에 초과된 수에서 -1이 최대값이 되겠죠?
이렇게 계산했습니다.
해당건은 간단한 공식을 통해서 해결할 수 있었습니다.
감사합니다. :D
'코딩테스트 > 백준' 카테고리의 다른 글
[코딩테스트] 백준(BAEKJOON) - 주유소(Java, 13305번) (0) 2023.04.29 [코딩테스트] 백준(BAEKJOON) - 전자레인지(Java, 10162번) (0) 2023.04.29 [코딩테스트] 백준(BAEKJOON) - 로프(Java, 2217번) (0) 2023.04.21 [코딩테스트] 백준(BAEKJOON) - 거스름돈(Java, 5585번) (0) 2023.04.15 [코딩테스트] 백준(BAEKJOON) - 보물(Java, 1026번) (0) 2023.04.15