baekjoon 20251212
This commit is contained in:
parent
7311a379dc
commit
191ed33a88
68
code_study/Baekjoon/java/_16724.java
Normal file
68
code_study/Baekjoon/java/_16724.java
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class _16724 {
|
||||||
|
static char[][] mapInfo = new char[1000][1000];
|
||||||
|
static int[] parents = new int[1000000];
|
||||||
|
static int[] rank = new int[1000000];
|
||||||
|
static int N, M;
|
||||||
|
|
||||||
|
static int area_num(int i, int j) {
|
||||||
|
return M*i + j;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int find(int n) {
|
||||||
|
if (n != parents[n]) return parents[n] = find(parents[n]);
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void union(int a, int b) {
|
||||||
|
a = find(a);
|
||||||
|
b = find(b);
|
||||||
|
|
||||||
|
if (a != b) {
|
||||||
|
if (rank[a] > rank[b]) parents[b] = a;
|
||||||
|
else if (rank[a] < rank[b]) parents[a] = b;
|
||||||
|
else {
|
||||||
|
parents[a] = b;
|
||||||
|
rank[b]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
N = sc.nextInt();
|
||||||
|
M = sc.nextInt();
|
||||||
|
sc.nextLine();
|
||||||
|
|
||||||
|
for(int i=0; i<N; i++) {
|
||||||
|
char[] line = sc.nextLine().toCharArray();
|
||||||
|
for(int j=0; j<M; j++) {
|
||||||
|
mapInfo[i][j] = line[j];
|
||||||
|
parents[area_num(i, j)] = area_num(i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sc.close();
|
||||||
|
|
||||||
|
for(int i=0; i<N; i++) {
|
||||||
|
for(int j=0; j<M; j++) {
|
||||||
|
char arrow = mapInfo[i][j];
|
||||||
|
int current_area = area_num(i, j);
|
||||||
|
int next_area = 0;
|
||||||
|
|
||||||
|
if (arrow == 'U') next_area = area_num(i-1, j);
|
||||||
|
else if (arrow == 'D') next_area = area_num(i+1, j);
|
||||||
|
else if (arrow == 'L') next_area = area_num(i, j-1);
|
||||||
|
else if (arrow == 'R') next_area = area_num(i, j+1);
|
||||||
|
|
||||||
|
union(current_area, next_area);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
for(int i=0; i<N*M; i++) {
|
||||||
|
if(parents[i] == i) result++;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
26
code_study/Baekjoon/ts/17103.ts
Normal file
26
code_study/Baekjoon/ts/17103.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
export {};
|
||||||
|
const maxNum = 1000000;
|
||||||
|
const input = require("fs").readFileSync(0).toString().trim().split('\n').map(Number);
|
||||||
|
const T: number = input[0];
|
||||||
|
|
||||||
|
let isPrime: boolean[] = Array.from({length: maxNum+1}, (_, i) => i>=2 ? true: false);
|
||||||
|
|
||||||
|
for(let n=2; n*n<=maxNum; n++) {
|
||||||
|
if(isPrime[n]) {
|
||||||
|
for(let i=n*n; i<=maxNum; i+=n) isPrime[i] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let result: number[] = [];
|
||||||
|
for(let t=1; t<=T; t++) {
|
||||||
|
const num: number = input[t];
|
||||||
|
let count: number = 0;
|
||||||
|
|
||||||
|
for(let i=2; i<=num/2; i++) {
|
||||||
|
if(isPrime[num-i] && isPrime[i]) count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(result.join('\n'));
|
||||||
Loading…
x
Reference in New Issue
Block a user