컴공댕이 공부일지
[c언어] 백준 (1292 쉽게 푸는 문제) 💥💦 본문
728x90
백준 1292번
쉽게 푸는 문제
브론즈 1
https://www.acmicpc.net/problem/1292
1292번: 쉽게 푸는 문제
첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.
www.acmicpc.net
경우를 나누느라 꽤나 오래 걸려따... 그치만 해결!
#include <stdio.h>
int main()
{
int A=0;
int B=0;
scanf("%d %d", &A, &B);
int a=A-1;
int b=B-1;
int nSum=0;
int mSum=0;
int n=0;
int x=0;
int y=0;
int res=0;
while(nSum<=a) {
n++;
nSum=(n*(n+1))/2;
}
int m=n-1;
while(mSum<=b) {
m++;
mSum=(m*(m+1))/2;
}
mSum-=m; //mSum은 범위 안의 것을 구해야하는데 b 다음의 합이 구해지므로 한 번 빼주기~
m--;
if(a==b) { //구간 안의 수가 1개일 때
res=n;
} else if(nSum>mSum){ //구간 안에 한 종류의 수만 있을 때
x=b+1-a;
res+=x*n;
}else { //구간 안에 여러 종류의 수들이 있을 때
x=nSum-a;
y=(b+1)-mSum;
res+=x*n;
res+=y*(m+1);
if(m-n>=1) {
for(int i=1; i<=m-n; i++) {
res+=(n+i)*(n+i);
}
}
}
printf("%d", res);
return 0;
}
탭으로 풀이를 정리해보았다.
#초기 셋팅. 변수들의 의미.
#본격 코드 해설.
브론즈에 낑낑대는 나란 감쟈...... 화이팅하쟈.....
스트릭 1일차... ㅋㅋㅋ EC.crew 이번 기수도 파이팅!!
+) 문제 풀기 위한 나의 사투... 지금 보면 꽤나 간단한 문제인데 왤케 낑낑거린건지....
728x90
'문제 풀이 > 코딩 문제 풀이 모음' 카테고리의 다른 글
[c언어] 백준 (1193 분수찾기) (0) | 2023.03.20 |
---|---|
[c언어] 백준 (2577 숫자의 개수 / 13909 창문 닫기 ) (0) | 2023.03.17 |
[c언어] 백준 (14916 거스름돈 / 11720번 숫자의 합 / 2851 슈퍼마리오) ★그리디 알고리즘 / 아스키코드 문자 연산 (0) | 2023.03.16 |
[c언어] 230310 백준 (10804 카드 역배치) (0) | 2023.03.10 |
[c언어] 백준 (25592 바둑돌 게임) (0) | 2023.03.09 |
Comments