ํฐ์คํ ๋ฆฌ ๋ทฐ
Algorithm/Baekjoon
[Java] ๋ฐฑ์ค 7453๋ฒ - ํฉ์ด 0์ธ ๋ค ์ ์
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 6. 28. 22:11https://www.acmicpc.net/problem/7453
[๋ฌธ์ ]
[ํ์ด]
4๊ฐ ์กฐํฉ์ ์์ฑํ์ฌ ๊ณ์ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐ์ด๊ณผ๊ฐ ๋์์ ๊ณ ๋ฏผํ๋ค๊ฐ ์๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ์ดํ์์ต๋๋ค.
https://skdltm117.tistory.com/49
A์ B, C์ D๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ preSum[][] ์ ์ฅํ์ฌ ํฌํฌ์ธํฐ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋ฉด ๋๋ ๋ฌธ์ ์์ต๋๋ค.
- data[][]์ A,B,C,D์ ์ซ์๋ค์ ์ ์ฅํฉ๋๋ค.
- data[0] X data[1] , data[2] X data[3] ์ preSum[0], preSum[1]์ ์ ์ฅํฉ๋๋ค.
- ํฌํฌ์ธํฐ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ํด preSum[0]์ preSum[1]์ Arrays.sort()๋ฅผ ํตํด ์ ๋ ฌํฉ๋๋ค.
- preSum[0]์ ์ผ์ชฝ๋ถํฐ, preSum[1]์ ์ค๋ฅธ์ชฝ๋ถํฐ ํ์ํ๋ฉฐ ํฉ์ด 0์ด ๋๋ ๊ฐฏ์๋ฅผ ์ธ์ด๊ฐ๋๋ค.
- ๋ง์ฝ ๊ฐ์ผ ์๊ฐ ์๋ค๋ฉด, ๊ทธ ์ซ์์ ๊ฐฏ์๋ฅผ ์ธ์ ๊ณฑํด์ฃผ๋ ๊ณผ์ ์ ์งํํฉ๋๋ค.
[์ฝ๋]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int N;
static long answer = 0;
static int[][] data;
static int preSum[][];
static StringTokenizer st;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
data = new int[N][4];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
data[i][0] = Integer.parseInt(st.nextToken());
data[i][1] = Integer.parseInt(st.nextToken());
data[i][2] = Integer.parseInt(st.nextToken());
data[i][3] = Integer.parseInt(st.nextToken());
}
preSum = new int[2][N * N];
int count = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
preSum[0][count] = data[i][0] + data[j][1];
preSum[1][count++] = data[i][2] + data[j][3];
}
}
Arrays.sort(preSum[0]);
Arrays.sort(preSum[1]);
int first = 0;
int second = preSum[0].length - 1;
int end = N * N;
while (first < end && 0 <= second) {
int sum = preSum[0][first] + preSum[1][second];
int firstCnt =1;
int secondCnt = 1;
if (sum == 0) {
while (first <= end - 2 && preSum[0][first] == preSum[0][first + 1]) {
firstCnt++;
first++;
}
while (0 < second && preSum[1][second] == preSum[1][second - 1]) {
secondCnt++;
second--;
}
answer += (long) firstCnt * secondCnt;
}
if (sum < 0) {
first++;
} else{
second--;
}
}
System.out.println(answer);
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋ฐฑ์ค 5430๋ฒ - AC (0) | 2022.07.14 |
---|---|
[Java] ๋ฐฑ์ค 2110๋ฒ - ๊ณต์ ๊ธฐ ์ค์น (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 9466๋ฒ - ํ ํ๋ก์ ํธ (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 14888๋ฒ - ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2022.06.28 |
[Java] ๋ฐฑ์ค 1939๋ฒ - ์ค๋์ ํ (0) | 2022.06.13 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- ๋ฐฑ์ค javascript
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- fp
- JavaScript
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- git
- http
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋คํธ์ํฌ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฐ
- ์ฝ๋ฉํ ์คํธ
- ์ด์์ฒด์
- ์นด์นด์ค ์ธํด
- ๋ฐฑ์ค
- ๋ ์์ปฌ ํ๊ฒฝ
- ํ๋กํ ์ฝ
- map
- TDD
- ์ ์ญ ๋ณ์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๋์์ธ ํจํด
- ์ด๋ถํ์
- ๋ฐฑ์ค node.js
- ํ๋กํผํฐ
- ํฌํฌ์ธํฐ
- Baekjoon
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
๊ธ ๋ณด๊ดํจ