컴퓨터공학/Problem Solving
Atcoder Boot camp Problems Medium 6 ~ 10
_Bibidi
2022. 11. 14. 10:32
6. B - Minesweeper
코드
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int h = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
String[] strs = new String[h];
for (int i = 0; i < strs.length; i++) {
strs[i] = br.readLine();
}
int[][] board = new int[h][w];
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
if (strs[y].charAt(x) == '#') {
board[y][x] = -100;
for (int dy = -1; dy <= 1; dy++) {
for (int dx = -1; dx <= 1; dx++) {
int ny = y + dy;
int nx = x + dx;
if (ny < 0 || ny >= h || nx < 0 || nx >= w) continue;
board[ny][nx]++;
}
}
}
}
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if (board[i][j] < 0) sb.append('#');
else sb.append(board[i][j]);
}
sb.append('\n');
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
7. B - Cut and Count
코드
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
String str = br.readLine();
int ans = 0;
for (int i = 1; i < str.length(); i++) {
boolean[] a = new boolean[26];
for (int j = 0; j < i; j++) {
a[str.charAt(j) - 'a'] = true;
}
boolean[] b = new boolean[26];
for (int j = i; j < str.length(); j++) {
b[str.charAt(j) - 'a'] = true;
}
int cnt = 0;
for (int j = 0; j < 26; j++) {
if (a[j] && b[j]) cnt++;
}
ans = Math.max(ans, cnt);
}
bw.write(ans + "");
bw.flush();
bw.close();
br.close();
}
}
8. C - Colorful Leaderboard
풀이
최소를 구할 때 주의해야 한다. rating이 3200 미만인 인원이 한 명이라도 있는 경우 서로 다른 색깔의 수이고 없다면 rating이 3200 이상인 인원들의 색을 하나로 고정한 경우가 최소이다.
코드
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int[] score = new int[]{400, 800, 1200, 1600, 2000, 2400, 2800, 3200};
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
boolean[] color = new boolean[score.length];
int free = 0;
for (int i = 0; i < n; i++) {
int cur = Integer.parseInt(st.nextToken());
int idx = 0;
while (idx < score.length && score[idx] <= cur) idx++;
if (idx < score.length) color[idx] = true;
else free++;
}
int cnt = 0;
for (int i = 0; i < color.length; i++) {
if (color[i]) cnt++;
}
int min = Math.max(cnt, 1);
int max = cnt + free;
bw.write(min + " " + max);
bw.flush();
bw.close();
br.close();
}
}
9. B - Choose Integer
코드
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
HashSet<Integer> set = new HashSet<>();
int sum = a;
while (!set.contains(sum % b)) {
set.add(sum % b);
sum += a;
}
bw.write(set.contains(c) ? "YES" : "NO");
bw.flush();
bw.close();
br.close();
}
}
10. C - Together
코드
import java.io.*;
import java.util.*;
public class Main {
public static void add(HashMap<Integer, Integer> map, int n) {
map.putIfAbsent(n, 0);
map.replace(n, map.get(n) + 1);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
HashMap<Integer, Integer> map = new HashMap();
for (int i = 0; i < n; i++) {
int cur = Integer.parseInt(st.nextToken());
add(map, cur - 1);
add(map, cur);
add(map, cur + 1);
}
int ans = 0;
for (int x : map.values()) {
ans = Math.max(ans, x);
}
bw.write(ans + "");
bw.flush();
bw.close();
br.close();
}
}