- 백준 8393번 풀이2022년 08월 18일
- Lv. 34 라이츄
- 작성자
- 2022.08.18.:23
문제
https://www.acmicpc.net/problem/8393
초항이 1이고 공차가 1인 등차수열에 대해 n번째 항(입력값)까지의 합 구하기
풀이
사실 While쪽이 편하긴 하지만, for로도 안되지는 않는다. 둘 다 어쨌든 반복문이니까.
a=int(input()) sum=0 for i in range(1,a+1): sum=sum+i print(sum)
이 코드도 돌아는 가는데, 이대로 제출하면 출력 초과가 뜬다. 왜냐하면 저대로 하게 되면 반복문 돌아갈때마다 결과가 나오기 때문.
a=int(input()) sum=0 for i in range(1,a+1): sum=sum+i print(sum)
그래서 print문을 for문 밖으로 빼 줘야 한다.
While문으로 하는 법
a=int(input()) i=1 sum=0 while i <= a: sum = sum + i i = i + 1 print(sum)
While문은 어떤 조건을 만족할때까지 그냥 합을 구하면 된다. 저것도 최종 값만 보고싶으면 print문을 밖으로 빼자.
반복문 없이 하는 법
import math; print('등차수열은 인접한 항의 차가 일정한 수열로, 인접한 항의 차를 공차라고 합니다. \n' '등차수열의 특정 항을 구하는 공식은 첫쨰항을 a_1, 공차를 d라고 할 때 \n' 'a_n = a_1 + (n-1) * d입니다. \n' '또한 등차수열 n번째 항까지의 합 S_n은 다음과 같습니다. \n' 'S_n = n * (2 * a_1) + (n - 1) * d / 2'); a=int(input('첫번째 항(a_1)을 입력해주세요. ')); d=int(input('공차(d)를 입력해주세요. ')); n=int(input('알고 싶은 항의 순서를 입력해주세요(예: 10번째 항=10) ')); a_n=a+((n-1)*d) print(a_n); S_n=n * ((2 * a) + (n - 1) * d) / 2; print(S_n);
아, 이게 그 비베로 만들었던 등차수열 살린거다. (등비수열도 있다) 고로 출처따원 남기지 않는다.
왜죠내가 만들었거든a=int(input()) # 등차수열의 합 Sn=n(a1+an)/2 S_n=a* ((2) + (a - 1) * 1) / 2; print(S_n)
저 코드에서 S_n 변수에 할당된 코드를 가져와 초항과 공차를 1로 고정하면 된다.
참고로 등차수열의 합은
이거 아니면
이걸로 계산한다. 일반항 a_n은 a_1+(n-1)d.
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 2577번 풀이 (0) 2022.08.18 백준 2438, 2439번 문제 풀이 (0) 2022.08.18 백준 10950번 풀이 (0) 2022.08.18 백준 14681번 풀이 (0) 2022.08.18 백준 2753번 풀이 (0) 2022.08.18 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)