โ ๋ถ๋ฅ
๊ธฐํํ, ๊ตฌํ, ์ํ
๐ ๋ฌธ์ ์ค๋ช
์๊ณจ์ ์๋ ํ์์ด์ ์ผ์ด ๋์๋ ์ปค๋ค๋ ์ฐธ์ธ๋ฐญ์ด ์๋ค. ๋ฌธ๋ ํ์์ด๋ ์ด ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ๊ฐ ๋๋์ฒด ๋ช ๊ฐ๋ ๋๋์ง ๊ถ๊ธํด์ก๋ค. ์ด๋ป๊ฒ ์์๋ผ ์ ์๋์ง ๊ณจ๋ํ ์๊ฐํ๋ค๊ฐ ๋๋์ด ์ข์ ์์ด๋์ด๊ฐ ๋ ์ฌ๋๋ค. ์ ๋ ์นด! 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ ๊ฐ์๋ฅผ ํค์๋ฆฐ ๋ค์, ์ฐธ์ธ๋ฐญ์ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋น๋ก์์ ์ด์ฉํ์ฌ ์ฐธ์ธ์ ์ด๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ ํค์๋ ธ๊ณ , ์ด์ ์ฐธ์ธ๋ฐญ์ ๋์ด๋ง ๊ตฌํ๋ฉด ๋๋ค. ์ฐธ์ธ๋ฐญ์ ใฑ-์ ๋ชจ์์ด๊ฑฐ๋ ใฑ-์๋ฅผ 90๋, 180๋, 270๋ ํ์ ํ ๋ชจ์(โ, โ, โ ๋ชจ์)์ ์ก๊ฐํ์ด๋ค. ๋คํํ๋ ๋ฐญ์ ๊ฒฝ๊ณ(์ก๊ฐํ์ ๋ณ)๋ ๋ชจ๋ ๋์ ๋ฐฉํฅ์ด๊ฑฐ๋ ๋จ๋ถ ๋ฐฉํฅ์ด์๋ค. ๋ฐญ์ ํ ๋ชจํ์ด์์ ์ถ๋ฐํ์ฌ ๋ฐญ์ ๋๋ ๋ฅผ ๋๋ฉด์ ๋ฐญ๊ฒฝ๊ณ ๊ธธ์ด๋ฅผ ๋ชจ๋ ์ธก์ ํ์๋ค.

์๋ฅผ ๋ค์ด ์ฐธ์ธ๋ฐญ์ด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ด๋ผ๊ณ ํ์. ๊ทธ๋ฆผ์์ ์ค๋ฅธ์ชฝ์ ๋์ชฝ, ์ผ์ชฝ์ ์์ชฝ, ์๋์ชฝ์ ๋จ์ชฝ, ์์ชฝ์ ๋ถ์ชฝ์ด๋ค. ์ด ๊ทธ๋ฆผ์ ์ผ์ชฝ์ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ, ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋จ์ชฝ์ผ๋ก 30m, ๋์ชฝ์ผ๋ก 60m, ๋จ์ชฝ์ผ๋ก 20m, ๋์ชฝ์ผ๋ก 100m, ๋ถ์ชฝ์ผ๋ก 50m, ์์ชฝ์ผ๋ก 160m ์ด๋ํ๋ฉด ๋ค์ ์ถ๋ฐ์ ์ผ๋ก ๋๋์๊ฐ๊ฒ ๋๋ค.
์ ๊ทธ๋ฆผ์ ์ฐธ์ธ๋ฐญ ๋ฉด์ ์ 6800m2์ด๋ค. ๋ง์ฝ 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๊ฐ 7์ด๋ผ๋ฉด, ์ด ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ 47600์ผ๋ก ๊ณ์ฐ๋๋ค.
1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์์, ์ฐธ์ธ๋ฐญ์ ์ด๋ฃจ๋ ์ก๊ฐํ์ ์์์ ํ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ ๋ฅผ ๋๋ฉด์ ์ง๋๋ ๋ณ์ ๋ฐฉํฅ๊ณผ ๊ธธ์ด๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ด ์ฐธ์ธ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โจ ์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ K (1 โค K โค 20)๊ฐ ์ฃผ์ด์ง๋ค. ์ฐธ์ธ๋ฐญ์ ๋ํ๋ด๋ ์ก๊ฐํ์ ์์์ ํ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ ๋ฅผ ๋๋ฉด์ ์ง๋๋ ๋ณ์ ๋ฐฉํฅ๊ณผ ๊ธธ์ด (1 ์ด์ 500 ์ดํ์ ์ ์) ๊ฐ ๋์งธ ์ค๋ถํฐ ์ผ๊ณฑ ๋ฒ์งธ ์ค๊น์ง ํ ์ค์ ํ๋์ฉ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ณ์ ๋ฐฉํฅ์์ ๋์ชฝ์ 1, ์์ชฝ์ 2, ๋จ์ชฝ์ 3, ๋ถ์ชฝ์ 4๋ก ๋ํ๋ธ๋ค.
๐ฅ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
- ๋ค์ ๋ณด๋๊น ์ข ์ ๊ธฐํ๊ฒ ํผ ๊ฒ ๊ฐ๋ค. ใ ใ ใ
- ์ ์ฒด์ ์ธ ๋ ผ๋ฆฌ๋ ์์ ์ฌ๊ฐํ๊ณผ ํฐ ์ฌ๊ฐํ์ ์ฐพ์๋ด์ ๋์ด๋ฅผ ๋นผ์ฃผ๋ ๊ฒ์ด๋ค.
- ์์ ์ฌ๊ฐํ์ ์ฐพ๊ธฐ ์ํ ๋ก์ง๋ง ๊ตฌํ ์ ์๋ค๋ฉด ๊ธ๋ฐฉ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine()); // 1์ ๊ณฑ๋ฏธํฐ ๋น ์ฐธ์ธ ๊ฐ์
int[] d = new int[6]; // ๋ฐฉํฅ ๋ฐฐ์ด
int[] l = new int[6]; // ๊ธธ์ด ๋ฐฐ์ด
int smallArea = 0; // ์์ ์ฌ๊ฐํ
int[] countClock = {2, 3, 1, 4}; // ๋ฐ์๊ณ ๋ฐฉํฅ
for(int i = 0; i < 6; i++) {
st = new StringTokenizer(br.readLine());
d[i] = Integer.parseInt(st.nextToken());
l[i] = Integer.parseInt(st.nextToken());
}
int comp;
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 4; j++) {
if(j ==3) comp = 2; // ๋ฐ์๊ณ ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ์ด๋ฉด, ๋น๊ต๊ฐ์ 2๋ก ์ค์ (๋ชจ๋ ํ์)
else comp = countClock[j+1]; // ๋ง์ง๋ง ๊ฐ์ด ์๋๋ฉด, ๋ค์๊ฐ์ผ๋ก ๋น๊ต
if(d[i] == countClock[j] && d[i+1] !=comp) { // ๋ฐ์๊ณ๋ก ๋๊ณ ์์ง ์๋ค๋ฉด ?
smallArea = l[i] * l[i+1];
}
}
}
// ๋ชจ๋ ํ์ํด๋ ์์ ์ฌ๊ฐํ์ ๋ฉด์ ์ด ๊ตฌํด์ง์ง ์์ผ๋ฉด ๋ฐฐ์ด์ ์ฒซ ๊ฐ๊ณผ ๋๊ฐ์ผ๋ก ๊ตฌํ๊ธฐ
if (smallArea == 0) {
smallArea = l[0] * l[5];
}
// ํฐ ์ฌ๊ฐํ์ ๋ฉด์ ์ ๋ฐฉํฅ ๋ฐฐ์ด์์ ํ๋ฒ์ฉ ๋์จ ๊ฐ์ ๊ณฑํด์ค๋ค.
int bigArea = 1;
int count[] = new int[6];
for(int i =0; i < 6; i++) {
count[d[i]]++;
}
for(int i =0; i < 6; i++) {
if(count[d[i]] == 1) bigArea *= l[i];
}
System.out.println((bigArea - smallArea)*N);
}
}
'๐ algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ ๋ถ๋ฅ
๊ธฐํํ, ๊ตฌํ, ์ํ
๐ ๋ฌธ์ ์ค๋ช
์๊ณจ์ ์๋ ํ์์ด์ ์ผ์ด ๋์๋ ์ปค๋ค๋ ์ฐธ์ธ๋ฐญ์ด ์๋ค. ๋ฌธ๋ ํ์์ด๋ ์ด ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ๊ฐ ๋๋์ฒด ๋ช ๊ฐ๋ ๋๋์ง ๊ถ๊ธํด์ก๋ค. ์ด๋ป๊ฒ ์์๋ผ ์ ์๋์ง ๊ณจ๋ํ ์๊ฐํ๋ค๊ฐ ๋๋์ด ์ข์ ์์ด๋์ด๊ฐ ๋ ์ฌ๋๋ค. ์ ๋ ์นด! 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ ๊ฐ์๋ฅผ ํค์๋ฆฐ ๋ค์, ์ฐธ์ธ๋ฐญ์ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋น๋ก์์ ์ด์ฉํ์ฌ ์ฐธ์ธ์ ์ด๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ ํค์๋ ธ๊ณ , ์ด์ ์ฐธ์ธ๋ฐญ์ ๋์ด๋ง ๊ตฌํ๋ฉด ๋๋ค. ์ฐธ์ธ๋ฐญ์ ใฑ-์ ๋ชจ์์ด๊ฑฐ๋ ใฑ-์๋ฅผ 90๋, 180๋, 270๋ ํ์ ํ ๋ชจ์(โ, โ, โ ๋ชจ์)์ ์ก๊ฐํ์ด๋ค. ๋คํํ๋ ๋ฐญ์ ๊ฒฝ๊ณ(์ก๊ฐํ์ ๋ณ)๋ ๋ชจ๋ ๋์ ๋ฐฉํฅ์ด๊ฑฐ๋ ๋จ๋ถ ๋ฐฉํฅ์ด์๋ค. ๋ฐญ์ ํ ๋ชจํ์ด์์ ์ถ๋ฐํ์ฌ ๋ฐญ์ ๋๋ ๋ฅผ ๋๋ฉด์ ๋ฐญ๊ฒฝ๊ณ ๊ธธ์ด๋ฅผ ๋ชจ๋ ์ธก์ ํ์๋ค.

์๋ฅผ ๋ค์ด ์ฐธ์ธ๋ฐญ์ด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ด๋ผ๊ณ ํ์. ๊ทธ๋ฆผ์์ ์ค๋ฅธ์ชฝ์ ๋์ชฝ, ์ผ์ชฝ์ ์์ชฝ, ์๋์ชฝ์ ๋จ์ชฝ, ์์ชฝ์ ๋ถ์ชฝ์ด๋ค. ์ด ๊ทธ๋ฆผ์ ์ผ์ชฝ์ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ, ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋จ์ชฝ์ผ๋ก 30m, ๋์ชฝ์ผ๋ก 60m, ๋จ์ชฝ์ผ๋ก 20m, ๋์ชฝ์ผ๋ก 100m, ๋ถ์ชฝ์ผ๋ก 50m, ์์ชฝ์ผ๋ก 160m ์ด๋ํ๋ฉด ๋ค์ ์ถ๋ฐ์ ์ผ๋ก ๋๋์๊ฐ๊ฒ ๋๋ค.
์ ๊ทธ๋ฆผ์ ์ฐธ์ธ๋ฐญ ๋ฉด์ ์ 6800m2์ด๋ค. ๋ง์ฝ 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๊ฐ 7์ด๋ผ๋ฉด, ์ด ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ 47600์ผ๋ก ๊ณ์ฐ๋๋ค.
1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์์, ์ฐธ์ธ๋ฐญ์ ์ด๋ฃจ๋ ์ก๊ฐํ์ ์์์ ํ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ ๋ฅผ ๋๋ฉด์ ์ง๋๋ ๋ณ์ ๋ฐฉํฅ๊ณผ ๊ธธ์ด๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ด ์ฐธ์ธ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โจ ์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ 1m2์ ๋์ด์ ์๋ผ๋ ์ฐธ์ธ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ K (1 โค K โค 20)๊ฐ ์ฃผ์ด์ง๋ค. ์ฐธ์ธ๋ฐญ์ ๋ํ๋ด๋ ์ก๊ฐํ์ ์์์ ํ ๊ผญ์ง์ ์์ ์ถ๋ฐํ์ฌ ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋๋ ๋ฅผ ๋๋ฉด์ ์ง๋๋ ๋ณ์ ๋ฐฉํฅ๊ณผ ๊ธธ์ด (1 ์ด์ 500 ์ดํ์ ์ ์) ๊ฐ ๋์งธ ์ค๋ถํฐ ์ผ๊ณฑ ๋ฒ์งธ ์ค๊น์ง ํ ์ค์ ํ๋์ฉ ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋ณ์ ๋ฐฉํฅ์์ ๋์ชฝ์ 1, ์์ชฝ์ 2, ๋จ์ชฝ์ 3, ๋ถ์ชฝ์ 4๋ก ๋ํ๋ธ๋ค.
๐ฅ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐญ์์ ์๋ผ๋ ์ฐธ์ธ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
- ๋ค์ ๋ณด๋๊น ์ข ์ ๊ธฐํ๊ฒ ํผ ๊ฒ ๊ฐ๋ค. ใ ใ ใ
- ์ ์ฒด์ ์ธ ๋ ผ๋ฆฌ๋ ์์ ์ฌ๊ฐํ๊ณผ ํฐ ์ฌ๊ฐํ์ ์ฐพ์๋ด์ ๋์ด๋ฅผ ๋นผ์ฃผ๋ ๊ฒ์ด๋ค.
- ์์ ์ฌ๊ฐํ์ ์ฐพ๊ธฐ ์ํ ๋ก์ง๋ง ๊ตฌํ ์ ์๋ค๋ฉด ๊ธ๋ฐฉ ํ ์ ์์ ๊ฒ ๊ฐ๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine()); // 1์ ๊ณฑ๋ฏธํฐ ๋น ์ฐธ์ธ ๊ฐ์
int[] d = new int[6]; // ๋ฐฉํฅ ๋ฐฐ์ด
int[] l = new int[6]; // ๊ธธ์ด ๋ฐฐ์ด
int smallArea = 0; // ์์ ์ฌ๊ฐํ
int[] countClock = {2, 3, 1, 4}; // ๋ฐ์๊ณ ๋ฐฉํฅ
for(int i = 0; i < 6; i++) {
st = new StringTokenizer(br.readLine());
d[i] = Integer.parseInt(st.nextToken());
l[i] = Integer.parseInt(st.nextToken());
}
int comp;
for(int i = 0; i < 5; i++) {
for(int j = 0; j < 4; j++) {
if(j ==3) comp = 2; // ๋ฐ์๊ณ ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ์ด๋ฉด, ๋น๊ต๊ฐ์ 2๋ก ์ค์ (๋ชจ๋ ํ์)
else comp = countClock[j+1]; // ๋ง์ง๋ง ๊ฐ์ด ์๋๋ฉด, ๋ค์๊ฐ์ผ๋ก ๋น๊ต
if(d[i] == countClock[j] && d[i+1] !=comp) { // ๋ฐ์๊ณ๋ก ๋๊ณ ์์ง ์๋ค๋ฉด ?
smallArea = l[i] * l[i+1];
}
}
}
// ๋ชจ๋ ํ์ํด๋ ์์ ์ฌ๊ฐํ์ ๋ฉด์ ์ด ๊ตฌํด์ง์ง ์์ผ๋ฉด ๋ฐฐ์ด์ ์ฒซ ๊ฐ๊ณผ ๋๊ฐ์ผ๋ก ๊ตฌํ๊ธฐ
if (smallArea == 0) {
smallArea = l[0] * l[5];
}
// ํฐ ์ฌ๊ฐํ์ ๋ฉด์ ์ ๋ฐฉํฅ ๋ฐฐ์ด์์ ํ๋ฒ์ฉ ๋์จ ๊ฐ์ ๊ณฑํด์ค๋ค.
int bigArea = 1;
int count[] = new int[6];
for(int i =0; i < 6; i++) {
count[d[i]]++;
}
for(int i =0; i < 6; i++) {
if(count[d[i]] == 1) bigArea *= l[i];
}
System.out.println((bigArea - smallArea)*N);
}
}