본문 바로가기

문제풀이30

[백준] 15565번 - 귀여운 라이언(JAVA) https://www.acmicpc.net/problem/15565 15565번: 귀여운 라이언 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 www.acmicpc.net - 문제 - - 풀이 과정 - 연속된 인형 들에서 라이언 인형(1)이 k개이상 만큼 포함되는 범위의 크기를 구하면 되는 문제입니다. 그러나 라이언 인형(1)이 포함되는 범위 중 가장 작은 범위의 크기를 구해야 하기에 k개이상이 아닌 k개가 되는 범위만 추려주면 됩니다. 연속된 숫자의 범위에서 답을 구하는 문제인 만큼 sliding window기법을 사용하여 풀어줄 수 있습니다. 연속된 수를 .. 2021. 5. 21.
[백준] 2531번 - 회전 초밥(JAVA) https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net - 문제 - - 풀이 과정 - 문제를 다시 풀어서 쉽게 말하자면 결국 연속된 숫자 중 중복되지 않은 숫자가 가장 많은 범위를 찾아 그 개수를 구하면 되는 문제입니다. 단, 쿠폰으로 추가 초밥을 먹을 수 있다는 점을 유의해야 합니다. 연속된 숫자 범위에서 쿠폰으로 먹을 수 있는 초밥이 없으면 카운트를 +1해줘야 합니다. 연속된 숫자의 범위에서 답을 구하는 문제.. 2021. 5. 11.
[백준] 20363번 - 당근 키우기(JAVA) www.acmicpc.net/problem/20363 20363번: 당근 키우기 첫째 줄에 X와 Y (0 ≤ X, Y ≤ 109)를 의미하는 정수가 공백으로 구분되어 주어진다. www.acmicpc.net - 문제 - - 풀이 과정 - 이 문제는 제시된 것처럼 온기를 10주면 수분이 1감소하고 수분을 10주면 온기가 1감소한다는 규칙이 있습니다. 이 규칙을 적용하여 다른 예시를 만들어 보았습니다. 예시를 풀어보면서 값이 더해지는 규칙을 살펴보니 큰 수를 먼저 더하고 작은 수를 더합니다. 그 다음 작은 수를 더하면서 발생한 감소 값을 다시 더해주니 결과값이 나왔습니다. 큰 수를 먼저 더하는 이유는 문제에 온기 또는 수분이 0이면 감소하지 않는 다는 조건이 있기 때문에 큰 수를 먼저 더해줍니다. 만약 작은 .. 2021. 4. 20.
[백준] 11047번 – 동전 0(JAVA) www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net - 문제 - - 풀이 과정 - 그리디 문제에서 출제되는 기본적인 형식입니다. 목표 금액을 동전의 단위가 가장 큰 값부터 나누어 주면 목표 금액을 만들기 위한 동전 개수의 최소값을 구할 수 있습니다. 동전의 단위를 입력 받을 배열을 선언 후 하나씩 입력 받아 배열에 저장합니다. (배열의 역순으로 단위를 입력 받아 단위가 가장 작은 동전이 배열에 마지.. 2021. 4. 8.
[백준] 2667번 - 단지번호붙이기(JAVA) www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net - 문제 - - 풀이 과정 - 주어진 2차원 배열에서 1로 연속된 개수와 1로 이어진 공간의 개수를 출력하는 문제입니다. 2차원 배열을 순차적으로 탐색하면서 1이 발견되면 연속된 1을 찾기 위한 탐색을 시작합니다. 탐색을 시작하게 되면 상, 하, 좌, 우의 값을 확인하여 해당 값이 1이면 다음 탐색 지점으로 등록하고 0일 경우 패스합니다. 탐색하면서 1이 발견된 경우 카운트를 해주어서 1의 개수를 누적합니다. 이.. 2021. 4. 6.
[백준] 10870번 – 피보나치 수 5(JAVA) www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net - 문제 - - 풀이 과정 - 피보나치 수는 문제에 있듯이 0과 1로 시작하며 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 됩니다. 예를 들어 [세번째 피보나치 수 = 첫번째 + 두번째 피보나치 수] [다섯 번째 피보나치 수 = 세 번째 + 네 번째 피보나치 수]가 되기에 Fn = Fn-1 + Fn-2 (n ≥ 2)의 공식이 성립하게 됩니다. 그렇기에 N번째 피보.. 2021. 3. 30.
[백준] 2869번 - 달팽이는 올라가고 싶다 (JAVA) www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net - 문제 – - 풀이 과정 – 문제를 간단히 읽어보면 달팽이가 일정 높이까지 가는데 걸리는 일 수를 계산하는 문제입니다. 하루 중 낮에는 올라갔다가(up) 밤에는 미끄러 지기에(down) up-down을 하면 달팽이가 하루 동안 이동하는 거리를 계산할 수 있습니다. 따라서 나무 길이를 length라고 할 때 length/(up-down)을 하여 며칠이 걸리는지 계산할 수 있는데 이렇게 계산하면 오답처리가 됩니다. 왜냐하면 문제에서 ‘정상에 올라간 후에는 미끄러지지 않는.. 2021. 3. 25.
[백준] 1193번 - 분수찾기 (JAVA) https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net - 문제 - - 풀이 과정 - T = 분모, 분자의 합 cur = 각 대각선 당 원소의 개수 prev_sum = 이전 대각선 원소 개수의 합 주어진 분수에서 규칙을 찾아보면 각 대각선 별 분모, 분자의 합이 T와 같습니다. 또한 대각선의 원소의 개수가 하나씩 증가하는 것을 볼 수 있습니다. 여기서 문제는 X번째의 분수를 찾아야 하는데 순서가 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> …. 순으로 진행됩니다. 현재 원소의 개수가 홀수면 ↗방향으로 진행이 되고 원소의 개수가 짝수면 ↙방향으로 진행이 됩니다. 진행.. 2021. 3. 23.
[CodeUp] 1090 - 1099 문제 풀이(Java) CodeUp-1090 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int r = sc.nextInt(); int n = sc.nextInt(); long sum = a; for(int i=1;i 2021. 3. 14.