728x90
반응형

백준 6

[백준][JAVA] 1662번 - 압축

https://www.acmicpc.net/problem/1662풀이'(' 기호가 나올 때마다 대응하는 ')' 기호가 나올 때까지 함수를 호출하고 사이의 길이를 구한다() 중간에 다른 괄호가 있는 경우 안쪽 괄호의 길이를 먼저 계산하여 리턴하면 바깥쪽 괄호의 Q 길이를 구할 수 있다 압축 부분 K(Q)의 Q의 길이를 구하는 것이 관건인 문제인 것 같다. 문제를 처음 봤을 때 stack를 생각했고 (, )를 사이 문자의 개수를 세어 Q의 길이를 계산하는 방식의 풀이 방법을 생각했으나 K(K(Q))와 같은 형태에서 바깥쪽 K(Q)의 Q의 길이를 구하는 데에 어려움이 있었다. 조금 더 생각해 보니 재귀함수를 호출해서 Q의 길이를 구하는 방법으로 문제를 해결할 수 있었다.답import java.io.*;imp..

백준/Java 2024.05.10

[백준][Java] 2304번 - 창고 다각형

https://www.acmicpc.net/problem/2304풀이입력받은 기둥 x 좌표 순서로 정렬다각형을 y축과 평행하게 3등분으로 분할 (왼쪽, 오른쪽, 중간)중간은 다각형의 최대 높이인 부분으로 지정함왼쪽과 오른쪽의 넓이를 구함왼쪽과 오른쪽을 구하면서 자연스럽게 중간 부분의 양쪽(오른쪽, 왼쪽) 기둥을 구할 수 있음중간 부분 넓이까지 구하여 세 부분의 넓이를 더한 최종 넓이를 구함다각형의 왼쪽과 오른쪽이 계단식으로 높다진다는 점을 생각하면 쉽게 풀 수 있는 문제이다. 처음에는 왼쪽과 오른쪽 두 개의 그룹으로 다각형을 나누어 구하는 방법으로 문제를 해결하려는 방식으로 잘못 접근해서 생각보다 시간이 걸렸다.답import java.io.*;import java.util.StringTokenizer;..

백준 2024.05.10

[백준][Java] 15650번 - N과 M (2)

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 재귀함수를 사용하여 수열을 생성하고, 수열의 길이가 m이 되었을 때 출력 재귀함수의 깊이는 M이 됨 함수의 깊이 = M(m = 0)이면, 만들어 놓은 수열 출력 함수의 깊이 0)이면, 다음 깊이의 함수를 호출할 때 새로운 수열을 전달함 (새로운 수열 = 이번 함수에서 인자로 받은 수열 + 수열에 새로운 숫자 추가) k - 조합을 생성하기 위한 시작 수 n - 범위의 최대 수 ..

백준/Java 2023.07.13

[백준][C++] 18111번 - 마인크래프트

https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 풀이 모든 땅의 높이만 같으면 되므로 N*M 크기의 땅을 선형변환 -> a[N*M] 모든 땅의 높이 중 최고 높이과 최저 높이 사이의 값이 땅을 고르는 높이가 될 수 있음 땅을 고르게 될 높이별로 땅을 고르는 시간 측정 -> 최솟 값 저장 이때 고르는 작업에 의한 인벤토리의 블록 개수 측정 -> 음수라면 불가능한 작업이므로 시간 측정 배제 -> 이때 작은 수에서 큰 수로 땅의 높이를 증가하면서 ..

백준/C++ 2023.07.10

[백준][C++] 11659번 - 구간 합 구하기 4

https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 풀이 수를 입력받아서 배열에 저장 - 배열에 각각 저장해서 더하면 시간 초과 -> 배열에는 배열의 이전 인덱스의 값과 입력받은 수의 합 저장 배열에서 합을 구해야 하는 구간 (끝 부분) 인덱스 값 - (처음 부분 - 1) 인덱스 값을 구하면 i~j번째 수의 합 답 #include using namespace std; int main(void) { ios::sync_with_..

백준/C++ 2023.04.26

[백준][C++] 11727번 - 2×n 타일링 2

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 풀이 직사각형의 가로를 채우는 방법 2 * 1 -> 2칸 차지 2 * 2 -> 2칸 차지 1 * 2 -> 1칸 차지 n >= 3 일 때, n-1에서 가로가 1 늘어난 경우, n-2에서 가로가 2 늘어난 경우를 이용하여 문제를 해결 가로가 2 늘어나는 경우의 수는 2가지 -> (n-2 결과) * 2 만큼 더해줘야 함 a[i] = (a[i - 1] + 2 * a[i - 2]) 답 #include using namespace std..

백준/C++ 2023.04.17
728x90
반응형