Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 845c7d4

Browse files
authored
Merge pull request #141 from GreatAlgorithm-Study/dahye
[10์ฃผ์ฐจ] ๊ณ ๋‹คํ˜œ
2 parents c2d77c7 + 4f95646 commit 845c7d4

File tree

8 files changed

+668
-0
lines changed

8 files changed

+668
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* ์—ญ์‚ฌ
6+
*/
7+
8+
public class DH_1613 {
9+
static final int INF = Integer.MAX_VALUE;
10+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
static StringTokenizer st;
12+
static int[][] arr;
13+
14+
public static void main(String[] args) throws Exception {
15+
initInput();
16+
solution();
17+
getOrder();
18+
}
19+
20+
static void getOrder() throws Exception {
21+
int n = Integer.parseInt(br.readLine());
22+
23+
StringBuilder sb = new StringBuilder();
24+
25+
for(int i = 0; i < n; i++) {
26+
st = new StringTokenizer(br.readLine());
27+
int s = Integer.parseInt(st.nextToken());
28+
int e = Integer.parseInt(st.nextToken());
29+
30+
// s์ง€์ ์—์„œ e์ง€์ ์œผ๋กœ ๊ฐ€๊ฑฐ๋‚˜, e์ง€์ ์—์„œ s์ง€์ ์œผ๋กœ ๊ฐ€๋Š” ๊ธธ์ด ๋‘˜ ๋‹ค ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์„ ํ›„ ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ
31+
if(arr[s][e] == INF && arr[e][s] == INF) sb.append(0);
32+
else if(arr[s][e] != Integer.MAX_VALUE) sb.append(-1); // s์—์„œ e์ง€์ ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด s๊ฐ€ ๋” ๋น ๋ฅธ ์‚ฌ๊ฑด
33+
else sb.append(1); // ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋ผ๋ฉด e๊ฐ€ ๋” ๋น ๋ฅธ ์‚ฌ๊ฑด
34+
sb.append("\n");
35+
}
36+
37+
System.out.println(sb);
38+
}
39+
40+
// ํ”Œ๋กœ์ด๋„์›Œ์…œ์„ ํ†ตํ•ด ๊ฐ ์ง€์ ๊ฐ„ ๊ฑฐ๋ฆฌ ๊ตฌํ•˜๊ธฐ
41+
static void solution() {
42+
for(int k = 1; k < arr.length; k++) {
43+
for(int s = 1; s < arr.length; s++) {
44+
if(s == k || arr[s][k] == INF) continue;
45+
for(int e = 1; e < arr.length; e++) {
46+
if(e == k || e == s || arr[k][e] == INF) continue;
47+
48+
if(arr[s][e] > arr[s][k] + arr[k][e])
49+
arr[s][e] = arr[s][k] + arr[k][e];
50+
}
51+
}
52+
}
53+
}
54+
55+
static void initInput() throws Exception {
56+
st = new StringTokenizer(br.readLine());
57+
58+
int n = Integer.parseInt(st.nextToken());
59+
int k = Integer.parseInt(st.nextToken());
60+
61+
arr = new int[n + 1][n + 1];
62+
63+
// ์ดˆ๊ธฐ ์ง€์  ๊ฐ„ ๊ฑฐ๋ฆฌ ๋ฌดํ•œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ธฐ
64+
for(int r = 0; r < arr.length; r++) Arrays.fill(arr[r], INF);
65+
66+
for(int i = 0; i < k; i++) {
67+
st = new StringTokenizer(br.readLine());
68+
69+
int s = Integer.parseInt(st.nextToken());
70+
int e = Integer.parseInt(st.nextToken());
71+
72+
arr[s][e] = 1;
73+
}
74+
}
75+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* ๋‚ด๋ ค๊ฐ€๊ธฐ
6+
*/
7+
8+
public class DH_2096 {
9+
static int[][] map, max, min;
10+
11+
public static void main(String[] args) throws Exception {
12+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
13+
StringTokenizer st;
14+
15+
int N = Integer.parseInt(br.readLine());
16+
map = new int[N + 1][3];
17+
max = new int[N + 1][3]; // ๊ฐ ์ค„๋งˆ๋‹ค ์ตœ๋Œ“๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜
18+
min = new int[N + 1][3]; // ๊ฐ ์ค„๋งˆ๋‹ค ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜
19+
20+
// ์ตœ์†Ÿ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๋Š” ๋ฌดํ•œ์œผ๋กœ ์ดˆ๊ธฐํ™”
21+
for(int r = 1; r < min.length; r++) Arrays.fill(min[r], Integer.MAX_VALUE >> 2);
22+
for(int r = 1; r < map.length; r++) {
23+
st= new StringTokenizer(br.readLine());
24+
for(int c = 0; c < 3; c++) map[r][c] = Integer.parseInt(st.nextToken());
25+
26+
for(int pc = 0; pc < 3; pc++) {
27+
for(int dc = -1; dc < 2; dc++) {
28+
int nc = pc + dc;
29+
if(nc < 0 || nc >= 3) continue;
30+
31+
max[r][nc] = Math.max(max[r - 1][pc] + map[r][nc], max[r][nc]);
32+
min[r][nc] = Math.min(min[r - 1][pc] + map[r][nc], min[r][nc]);
33+
}
34+
}
35+
}
36+
37+
int maxValue = Integer.MIN_VALUE, minValue = Integer.MAX_VALUE;
38+
for(int c = 0; c < 3; c++) {
39+
maxValue = Math.max(maxValue, max[N][c]);
40+
minValue = Math.min(minValue, min[N][c]);
41+
}
42+
43+
System.out.println(maxValue + " " + minValue);
44+
}
45+
}
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* ์Šค๋„์ฟ  ํ’€๊ธฐ
6+
*/
7+
8+
public class DH_2955 {
9+
static boolean error; // ์Šค๋„์ฟ ์— ๋ชจ์ˆœ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ณ€์ˆ˜
10+
static char[][] map;
11+
static boolean[][][] v; // 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ํ‘œ์‹œํ•˜๋Š” ๋ณ€์ˆ˜
12+
static HashSet<Integer>[] set; // ์Šค์ฝ”์ฟ  ํŒ์„ 3 X 3์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, 1 ~ 9๋ฒˆ์งธ ์นธ์—์„œ ์–ด๋–ค ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜
13+
14+
public static void main(String[] args) throws Exception {
15+
initInput();
16+
System.out.println(solution() ? printMap(): "ERROR");
17+
}
18+
19+
static boolean solution() {
20+
if(error) return false;
21+
L: while(true) {
22+
int putCnt = 0;
23+
24+
// 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ฐจ๋ก€๋กœ ์ž…๋ ฅ
25+
for(int k = 1; k < 10; k++) {
26+
// map์—์„œ 3 X 3ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์”ฉ ํ™•์ธํ•จ
27+
for(int r = 0; r < 7; r += 3) {
28+
for(int c = 0; c < 7; c += 3) {
29+
// 3 X 3 ๋ฐฐ์—ด์— k๊ฐ€ ์žˆ์œผ๋ฉด continue;
30+
int idx = (r / 3) * 3 + c / 3;
31+
if(set[idx].contains(k)) continue;
32+
33+
// 3 X 3 ๋ฐฐ์—ด์— k๊ฐ€ ์—†์œผ๋ฉด ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ง€์  ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
34+
int canExistPoint = 0; // ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ง€์  ๊ฐœ์ˆ˜
35+
int pr = 0, pc = 0;
36+
for(int sr = r; sr < r + 3; sr++) {
37+
for(int sc = c; sc < c + 3; sc++) {
38+
if(!v[k][sr][sc] && map[sr][sc] == '.') {
39+
canExistPoint += 1;
40+
pr = sr;
41+
pc = sc;
42+
}
43+
}
44+
}
45+
46+
// ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ์—†์œผ๋ฉด ์ž˜๋ชป๋œ ์Šค๋„์ฟ 
47+
if(canExistPoint == 0) {
48+
error = true;
49+
break L;
50+
}
51+
52+
// ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ํ•œ ๊ณณ์ด๋ผ๋ฉด
53+
// ์ˆซ์ž ์ž…๋ ฅํ•˜๊ธฐ
54+
if(canExistPoint == 1) {
55+
map[pr][pc] = (char) (k + '0');
56+
// ์ˆซ์ž ์ž…๋ ฅํ•˜๊ณ  ๊ฐ€๋กœ, ์„ธ๋กœ ํ‘œ์‹œ ๋‚จ๊ธฐ๊ธฐ
57+
markCross(pr, pc, k);
58+
// ๊ตฌ์—ญ์— ํ•ด๋‹น ์ˆซ์ž ์ €์žฅํ•ด์ฃผ๊ธฐ
59+
set[idx].add(k);
60+
// map์— ์ž…๋ ฅํ•œ ์ˆซ์ž ๊ฐœ์ˆ˜ + 1
61+
putCnt += 1;
62+
}
63+
}
64+
}
65+
}
66+
67+
// map์— ์ž…๋ ฅํ•œ ์ˆซ์ž๊ฐ€ ์—†๋‹ค๋ฉด ๋”์ด์ƒ ์Šค๋„์ฟ  ํƒ์ƒ‰ ๋!
68+
if(putCnt == 0) break;
69+
70+
}
71+
return !error;
72+
}
73+
74+
static String printMap() {
75+
StringBuilder sb = new StringBuilder();
76+
for(int r = 0; r < map.length; r++) {
77+
for(int c = 0; c < map[0].length; c++) sb.append(map[r][c]);
78+
sb.append("\n");
79+
}
80+
81+
return sb.toString();
82+
}
83+
84+
static void initInput() throws Exception {
85+
System.setIn(new FileInputStream("./input/BOJ2955.txt"));
86+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
87+
v = new boolean[10][9][9];
88+
map = new char[9][9];
89+
set = new HashSet[9];
90+
91+
for(int i = 0; i < 9; i++) set[i] = new HashSet<Integer>();
92+
for(int r = 0; r < map.length; r++) {
93+
String s = br.readLine();
94+
for(int c = 0; c < map[0].length; c++) {
95+
map[r][c] = s.charAt(c);
96+
97+
if(map[r][c] == '.') continue;
98+
int num = map[r][c] - '0';
99+
100+
// map์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ๋ฐ›์€ ์ง€์  ๊ธฐ์ค€ ๊ฐ€๋กœ, ์„ธ๋กœ ํ‘œ์‹œ ๋‚จ๊ธฐ๊ธฐ
101+
markCross(r, c, num);
102+
103+
// map์„ 3 X 3์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, ํ•ด๋‹น ์นธ์— ์–ด๋–ค ์ˆ˜๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์ €์žฅ
104+
// ์ˆซ์ž๋ฅผ ์ž…๋ ฅ ๋ฐ›์•˜๋Š”๋ฐ, ํ•ด๋‹น ๊ตฌ์—ญ์— ์ด๋ฏธ ๊ทธ ์ˆซ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ์ˆœ์ด ์ผ์–ด๋‚˜๋Š” ์Šค๋„์ฟ 
105+
if(!putNumSet(r, c, num)) error = true;
106+
}
107+
}
108+
}
109+
110+
static boolean putNumSet(int r, int c, int num) {
111+
int idx = (r / 3) * 3 + c / 3;
112+
if(set[idx].contains(num)) return false;
113+
set[idx].add(num);
114+
return true;
115+
}
116+
117+
static void markCross(int r, int c, int num) {
118+
for(int rr = 0; rr < 9; rr++) v[num][rr][c] = true;
119+
for(int cc = 0; cc < 9; cc++) v[num][r][cc] = true;
120+
}
121+
}

0 commit comments

Comments
(0)

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /