ํ๋ฉด์์ n๊ฐ์ ์ ์ด ์๋ค. ์ด ์ ๋ค ์ค์ ์๋ก ๋ค๋ฅธ ๋ ์ ์ ์ ํํ๋ฉด ํ๋์ ์ง์ ์ด ๋ง๋ค์ด์ง๋ค. ์ด์ ๊ฐ์ด ์ง์ ์ ๋ง๋ค์์ ๋, x์ถ ๋๋ y์ถ์ ํํํ ์ง์ ์ด ๋ช ๊ฐ๋ ๋๋์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ n(1โคnโค100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ n๊ฐ์ ์ค์๋ ๊ฐ ์ ์ ์ขํ๊ฐ int ๋ฒ์์์ ์ฃผ์ด์ง๋ค. ๋ง์ฝ ์ ๋ ฅ์ ์๋ก ๊ฐ์ ๋ ์ ์ด ์ฃผ์ด์ง๋ฉด, ๊ทธ ๋ ์ ์ ์ด์ฉํ์ฌ ์ง์ ์ ๋ง๋ค ์ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค.
HashMap ์ด์ฉ
๐ก x๋ฅผ key, y๋ฅผ value๋ก ํ๋ hashmap ์์ฑ
๐ก y๋ฅผ key, x๋ฅผ value๋ก ํ๋ hashmap ์์ฑ
๐ก x๊ฐ์ด ๊ฐ์ผ๋ฉด y์ถ์ ํํ, y๊ฐ์ด ๊ฐ์ผ๋ฉด x์ถ์ ํํํจ
โ ๊ฐ์ key๊ฐ์ ๊ฐ์ง value๋ค์ด 2๊ฐ ์ด์ ์กด์ฌํ๋ฉด, ํํํ ์ง์ ํ๋๊ฐ ์์ฑ๋จ
1) x๋ฅผ key, y๋ฅผ value๋ก ํ๋ hashmap ์์ฑ
HashMap<Integer, ArrayList<Integer>> xMap = new HashMap<>();
...
ArrayList<Integer> ylist = new ArrayList<>();
...
if(xMap.containsKey(x)) {
ylist = xMap.get(x);
}
ylist.add(y);
xMap.put(x, ylist);
2) y๋ฅผ key, x๋ฅผ value๋ก ํ๋ hashmap ์์ฑ
HashMap<Integer, ArrayList<Integer>> yMap = new HashMap<>();
...
ArrayList<Integer> xlist = new ArrayList<>();
...
if(yMap.containsKey(y)) {
xlist = yMap.get(y);
}
xlist.add(x);
yMap.put(y, xlist);
3) ๊ฐ์ key๊ฐ์ ๊ฐ์ง value๋ค์ด 2๊ฐ ์ด์ ์กด์ฌํ๋ฉด, ํํํ ์ง์ ํ๋๊ฐ ์์ฑ๋จ
int count = 0;
for(int key : xMap.keySet()) {
if(xMap.get(key).size() >= 2)
count++;
}
for(int key : yMap.keySet()) {
if(yMap.get(key).size() >= 2)
count++;
}
import java.util.HashMap;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Hash_1 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashMap<Integer, ArrayList<Integer>> xMap = new HashMap<>();
HashMap<Integer, ArrayList<Integer>> yMap = new HashMap<>();
for(int i=0; i<n; i++) {
String[] s = br.readLine().split(" ");
int x = Integer.parseInt(s[0]);
int y = Integer.parseInt(s[1]);
ArrayList<Integer> ylist = new ArrayList<>();
ArrayList<Integer> xlist = new ArrayList<>();
if(xMap.containsKey(x)) {
ylist = xMap.get(x);
}
ylist.add(y);
xMap.put(x, ylist);
if(yMap.containsKey(y)) {
xlist = yMap.get(y);
}
xlist.add(x);
yMap.put(y, xlist);
}
int count = 0;
for(int key : xMap.keySet()) {
if(xMap.get(key).size() >= 2)
count++;
}
for(int key : yMap.keySet()) {
if(yMap.get(key).size() >= 2)
count++;
}
System.out.println(count);
}
}
์ฑ๊ณตโจ