반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b-QGqADMBBASw
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
패턴찾기 연습을 할 수 있던 문제. 근데 처음에 p,q 범위보고 생각없이 포문을 i < 101로 돌려서 틀렸음.
뭐든 한 번 더 생각해보자. 요즘 시그마공식을 사용하는 일이 잦은 것 같다. 옛날 생각도 나고 문제 푸는데 재밌었음.
내 코드
메모리 : 20684 KB
시간 : 122 ms
코드길이 : 1359 B
[내 코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for(int t = 1; t <= T; t++) {
sb.append('#').append(t).append(' ');
st = new StringTokenizer(br.readLine());
int p = Integer.parseInt(st.nextToken());
int q = Integer.parseInt(st.nextToken());
int x = 0;
int y = 0;
int z = 0;
int w = 0;
boolean getp = false;
boolean getq = false;
for(int i = 1; i < 150; i++) {
int flag = flag(i);
if(p <= flag && !getp) {
x = i - (flag - p);
y = flag - p + 1;
getp = true;
}
if(q <= flag && !getq) {
z = i - (flag - q);
w = flag - q + 1;
getq = true;
}
if(getp && getq)
break;
}
int starx = x + z;
int stary = y + w;
int result = 0;
if(stary == 1)
result = flag(starx);
else
result = flag(starx) + (starx + stary - 2) * (starx + stary - 1) / 2 - starx * (starx - 1) / 2;
sb.append(result).append('\n');
}
System.out.print(sb);
}
static int flag(int i) {
return i * (i + 1) / 2;
}
}
반응형
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 13428 : 숫자 조작 (0) | 2023.05.12 |
---|---|
[SWEA] 3282 : 0/1 Knapsack (0) | 2023.05.11 |
[SWEA] 1209 : Sum (0) | 2023.05.08 |
[SWEA] 1208 : Flatten (0) | 2023.05.08 |
[SWEA] 3499 : 퍼펙트셔플 (0) | 2023.05.07 |