본문 바로가기

분류 전체보기

(121)
[Silver1-JAVA] 백준 14888 - 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 🤔 문제 풀이 제법 쉬웠던 완전 탐색 문제였다. 전체 숫자에 대해 수행할 수 있는 모든 연산자를 도입하여 최대와 최소값을 구하면 된다. 아마 별다른 최대, 최소를 구할 수 있는 방법이 없을 것이라 생각하고 고민없이 깊이우선 탐색 알고리즘인 DFS 알고리즘을 사용해 풀었다. 음수와 양수의 나눗셈 같은 경우 문제에서 양수 끼리 몫을 취하고 음..
[Silver3-JAVA] 백준 2407 - 조합 https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 🤔 문제풀이 처음 문제를 보고 재귀로 풀으려고 했다가 시간초과가 계속 나서 힘들었었던 문제다. 조합에 관련된 문제가 자주 나오므로 알고있으면 좋을 것 같다. 어떤 n과 m이 주어졌을때 nCm = (n-1)C(m) + (n-1)C(m-1)이다. 또한 nC0 = nCn = 1이며 nCm = nCn-m이다. (ex. 4C3 = 4C1) 데이터의 최대 범위를 입력했을 때 숫자가 매우 크게 나오기 때문에 무한대를 표현할 수 있는 class인 BigInteger을 사용했다. BigInteger 형식의 데이터를 사칙연산하기 ..
[JAVA] 자료구조 - 배열 🤔 배열이란? 순서대로 번호가 붙은 원소들이 연속적인 형태로 구성된 자료구조를 말한다. 만약 배열이 없었다면 우리는 하나하나 변수들을 선언했어야 했을 것이다. 하지만 우리는 배열이 존재하기 때문에 보다 쉽게 여러 데이터를 저장할 수 있게되었다. // No 배열 int a = 1; int b = 2; int c = 3; int d = 4; int f = 5; // Yes 배열 int[] abc = new int[5]; for(int i = 1; i
[Gold3-JAVA] 백준 2638 - 치즈 https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 🤔문제 풀이 상당히 난이도가 있었던 그래프 탐색 문제였다. 전체적인 로직은 어렵지 않았지만 외부공기와 내부공기를 파악해 치즈가 내부에 있는지 외부에 있는지를 판단하는 것이 어려웠다. 본인은 다음과 같은 로직 순서로 풀이를 진행했다. 1. map에 치즈 정보를 받는다. 2. 가장 자리에는 치즈가 놓이지 않기 때문에 0,0 좌표부터 DFS 탐색을 진행하며 외부 공기 위치를 파악했다. 3...
[Silver3-JAVA] 백준 2193 - 이친수 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 🤔문제 풀이 간단한 DP 문제였다. 이친수는 첫째 자리가 반드시 1로 시작해야하며 1이 연속으로 오지 않는 수인데 자릿수가 증가할때마다 가능한 숫자들의 개수를 구해보니 N=1일때, 1 (1개) N=2일때, 10 (1개) N=3일때, 100, 101 (2개) N=4일때, 1000, 1001, 1010 (3개) ... dp[N] = dp[N-1] + dp[N-2]의 피보나치 수열의 형태를 ..
[Silver2-JAVA] 백준 13565 - 침투 https://www.acmicpc.net/problem/13565 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 🤔 문제 풀이 자주 접했던 그래프 탐색 문제들과 비슷한 문제여서 어렵지 않게 풀어냈다. 그래프 탐색 알고리즘은 BFS를 사용했고 map의 정보들 중 inner side 가 0인 곳과 outer side가 0인 곳을 배열을 생성해 담아두고 이후 각 inner side에서 시작하여 탐색이 끝나면 outer side에 도달했는지 여부를 검사했다. 🚨CODE impor..
[Gold4-JAVA] 백준 1967 - 트리의 지름 https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 🤔 문제 풀이 그래프 탐색 문제인 트리의 지름 문제이다. 트리의 연결 정보들 중에서 한 정점에서 다른 정점까지의 거리가 가장 긴 것을 찾으면 되는 문제다. 모든 정점에 대한 연결 정보를 저장하기 위해 Node 클래스를 생성하여 정점과 가중치 정보를 저장하고 이를 ArrayList에 저장하였다. 모든 정점 중, 한 start 정점에서 다른 모든 정점을 이동하며 start정점의 최..
[JAVA] 백준 11048 - 이동하기 https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 🤔 문제 풀이 dp 문제 치곤 굉장히 쉬운 문제였다. 문제에서 이동할 수 있는 방향은 자기 자신을 기준으로 x+1 or y+1 or x+1, y+1 만 존재한다. 나는 먼저 map배열을 생성하여 좌표 별 사탕 개수 정보를 입력 받았고 dp 배열을 생성하여 현재 좌표에서 dp 배열 x-1, y and x, y-1 and x-1, y-1 좌표 값들의 최대 값을 구하고 현재 좌표에서 가져..

반응형