soo 문제집 완전탐색 easy 문제 남은 10문제중 7문제를 풀었고, 그중 힌트를 참고한 문제 및 정리하기 위한 4개의 문제를 재풀이해서 학습 및 체득하려는 목적으로 작성했습니다.
| 문제번호 | 제목 | 난이도 |
|---|---|---|
| 3085번 | 사탕 게임 | 실버 2 |
| 16945번 | 매직 스퀘어로 변경하기 | 실버 2 |
| 5883번 | 아이폰 9S | 실버 4 |
| 5671번 | 호텔 방 번호 | 실버 5 |
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));
int n = Integer.parseInt(br.readLine());
char[][] arr = new char[n][n];
for (int i = 0; i < n; i++) {
String input = br.readLine();
for (int j = 0; j < n; j++) {
arr[i][j] = input.charAt(j);
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-1; j++) {
char tmp = arr[i][j];
arr[i][j] = arr[i][j+1];
arr[i][j+1] = tmp;
ans = findAns(n, arr, ans);
tmp = arr[i][j];
arr[i][j] = arr[i][j+1];
arr[i][j+1] = tmp;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n-1; j++) {
char tmp = arr[j][i];
arr[j][i] = arr[j+1][i];
arr[j+1][i] = tmp;
ans = findAns(n,arr,ans);
tmp = arr[j][i];
arr[j][i] = arr[j+1][i];
arr[j+1][i] = tmp;
}
}
bw.write(ans+"");
br.close();
bw.close();
}
private static int findAns(int n, char[][] arr, int ans) {
for (int i = 0; i < n; i++) {
int count = 1;
for (int j = 0; j < n - 1; j++) {
if(arr[i][j] == arr[i][j+1]){
count++;
}else{
count = 1;
}
ans = Math.max(ans, count);
}
}
for (int i = 0; i < n; i++) {
int count = 1;
for (int j = 0; j < n - 1; j++) {
if(arr[j][i] == arr[j+1][i]){
count++;
}else{
count = 1;
}
ans = Math.max(ans, count);
}
}
return ans;
}
}
import java.io.*;
import java.util.*;
public class Main {
static int[][] arr = new int[3][3];
static boolean[] visited = new boolean[10];
static int min = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for (int i = 0; i < 3; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < 3; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
backtracking(0,0);
bw.write(min+"");
br.close();
bw.close();
}
private static void backtracking(int depth, int sum) {
if(depth == 9 && checked()){
min = Math.min(min, sum);
return;
}
int y = depth / 3;
int x = depth % 3;
for (int i = 1; i <= 9; i++) {
if(!visited[i]){
visited[i] = true;
int tmp = arr[y][x];
arr[y][x] = i;
backtracking(depth+1, sum + Math.abs(tmp - i));
visited[i] = false;
arr[y][x] = tmp;
}
}
}
private static boolean checked() {
for (int i = 0; i < 3; i++) {
int rowSum = 0;
int colSum = 0;
for (int j = 0; j < 3; j++) {
rowSum += arr[i][j];
colSum += arr[j][i];
}
if(rowSum != 15 || colSum != 15){
return false;
}
}
int cross1 = arr[0][0] + arr[1][1] + arr[2][2];
int cross2 = arr[0][2] + arr[1][1] + arr[2][0];
if(cross1 != 15 || cross2 != 15){
return false;
}
return true;
}
}
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));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
Set<Integer> set = new HashSet<>();
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
set.add(arr[i]);
}
int ans = 1;
for(Integer a : set){
int now = arr[0];
int count = 1;
for (int i = 1; i < n; i++) {
if(arr[i] == a){
continue;
}
if(arr[i] != now){
count = 1;
}else{
count++;
ans = Math.max(ans, count);
}
now = arr[i];
}
}
bw.write(ans+"");
br.close();
bw.close();
}
}
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));
String input = "";
while((input = br.readLine()) != null){
String[] tmp = input.split(" ");
int n = Integer.parseInt(tmp[0]);
int m = Integer.parseInt(tmp[1]);
int count = 0;
for (int i = n; i <= m; i++) {
String s = String.valueOf(i);
Set<Character> set = new HashSet<>();
for (int j = 0; j < s.length(); j++) {
set.add(s.charAt(j));
}
if(set.size() == s.length()){
count++;
}
}
bw.write(count + "\n");
}
br.close();
bw.close();
}
}