https://www.acmicpc.net/problem/2669 import java.io.*;import java.util.*;public class Main { static int stoi(String s) { return Integer.parseInt(s); } static int answer = 0; static boolean[][] board = new boolean[100][100]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Str..
백준
https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 코드 전체는 맨 아래에 있습니다! 풀이 문제의 조건은 다음과 같다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오. 처음에는 소수이니까 에라토스테네스의 체를 쓸 생각이었다. 근데 문제 조건이 N보다 크거나 같다고 쓰여있어서, 머리 동동 굴렸다...
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 처음에는 조합으로 풀면 되겠다 싶어서 풀었다. 계속 안 풀렸는데, 공집합인 경우도 있어서 depth 가 0보다 큰 경우에 카운팅 하도록 했다. 그리고 제출 후, 구글링을 해보니 다 나랑 다른 풀이로 풀었었다. 가장 이해가 되는 사진이 있어서 가져와보면, 재귀인 것은 똑같지만, 현재 값을 포함하는 경우와 포함하지 않는 경우로 트리 구조로 가져가서 풀었다. 두 풀이..
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 전체 코드는 맨 마지막에 두었다. 문제를 풀기 전에 조합으로 팀을 나누고, 각 팀의 점수를 구한 뒤, 두 팀의 점수의 차 중 최솟값을 저장하면 되겠다 싶었다. 근데 우선 조합 구현을 순열로... 하고 있었고, 또 나는 조합 구현을 백트래킹으로 했고, 매개변수로 총 점수 합을 가져가는 식으로 구현했는데 다 풀고 찾아보니 조합때는 팀 편성만 담당하고, 마지막에 다 편성이 되면 그때 점수를 구하는 형태로 구현을 해둬서 나도..
https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 분할 정복은 한번 익혀두면 구조가 같아서 바로 익혀진다. 파이썬으로 풀었어서 이젠 자바로 풀어봤다. 메인 파트이다. 가로 길이를 입력받고, 2차원 배열에 값을 넣어준 뒤, 분할정복 함수를 실행 하고 출력해준다. 끝! 분할 정복 함수는 n행 m열 좌푯값과 정복할 영역의 한 변의 길이를 입력으로 받는다. 그 뒤에 첫 좌푯값을 check 라는 변수에 저장해두고, 영역을 이중포문으로 돌면서 ..
https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net BFS로 풀었다. 정답 비율 보고 겁먹었는데 생각보다 할만한 난이도. 원트클! 대강의 흐름을 이렇게 잡았다. 1. BFS로 물에 안 잡기는 영역을 세기 2. (비가 안 내릴 수 있으니) 0부터 물에 다 잡기는 최대 높이까지 +1씩 반복문으로 돌면서 최대 영역 개수 구하기 우선 String을 int 로 변환해주는 stoi 함수는 편의상 만들어 두고 쓰는 함수이다. 그리고 지역의 행, 열 길이인 N 지역의 ..
https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net 처음에 어떻게 풀지 하다가 그래도 구글링 하기 전까지 50%는 다 풀어놨었다 좀 더 시간 들였으면 다 풀었을 텐데 아쉽 일단 1. 백트래킹 + 2. 가로, 세로, 3*3칸 체크하기. 이 2개가 큰 흐름이고 여기까진 알았다. 근데 난 구현이 약한가보다 문제 푸는 순서는 다음과 같다. 9*9칸의 보드판을 2차원 배열에 입력받고 그 중 0인 칸을 따로 모아둔 후 백트래킹으로 0인 칸을 전부 돌면서..
https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 동적 계획법, 그중에 상향식(Tabulation)으로 풀었다. 처음에는 백트래킹으로 풀어봤는데 시간초과가 났다. 메모리가 4MB 밖에 안 되어서 dp는 아니겠다 싶었는데 dp로 푸는 거였다. 풀이에 사용하는 변수들과 입력이다. N, K는 각각 동전 개수와 만들어야 하는 금액이며, 동전을 받기 위해 리스트를 만들어 입력해주었고, 동적 계획법으로 푸므로 dp를 0부터 K를 범위로 하는 정수 배열로 선언..
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 맨 밑에 전체 코드 있습니다. 문제설명 텀 프로젝트를 위해 학생들은 서로 팀을 이뤄야 한다. 팀의 조건은 다음과 같다. . 한 학생은 1명의 학생을 가리켜야 한다. 자기자신도 상관 없다. 학생들이 서로 가리키다가 싸이클이 형성되면 하나의 팀이 된다. 이때 자기자신을 가리키면 혼자 한 팀이다. 출력은 팀을 이루지 못한 학생 수이다 학생번호 1 2 3 4 5 6 7 학생이 가리킨 학생번호 3 1 3 7 3..