알고리즘 - Baekjoon/Silver

    [백준] 18429번 : 근손실 Silver3(실버3) - JAVA[자바]

    [Silver III] 근손실 - 18429 문제 링크 성능 요약 메모리: 12428 KB, 시간: 108 ms 분류 백트래킹, 브루트포스 알고리즘 제출 일자 2024년 1월 15일 21:54:53 문제 설명 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 감소하게 된다. 따라서 운동을 하지 않고, 가만히 있다면 매일매일 중량이 감소할 뿐이다. 다행히도 이 대학원생은 N개의 서로 다른 운동 키트를 가지고 있다. 이 대학원생은 하루에 1개씩의 키트를 사용하며, 매일 어떤 키트를 사용할 지는 마음대로 결정할 수 있다. 운동 키트들은 각각의 중량 증가량을..

    [백준] 1935번 : 후위 표기식2 Silver3(실버3) - JAVA[자바]

    [Silver III] 후위 표기식2 - 1935 문제 링크 성능 요약 메모리: 11872 KB, 시간: 84 ms 분류 자료 구조, 스택 제출 일자 2024년 1월 14일 14:28:33 문제 설명 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. 3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주..

    [백준] 1991번 : 트리 순회 Silver1(실버1) - JAVA[자바]

    [Silver I] 트리 순회 - 1991 문제 링크 성능 요약 메모리: 11584 KB, 시간: 76 ms 분류 재귀, 트리 제출 일자 2024년 1월 14일 02:07:09 문제 설명 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진..

    [백준] 17829번 : 222-풀링 Silver2(실버2) - JAVA[자바]

    [Silver II] 222-풀링 - 17829 문제 링크 성능 요약 메모리: 114204 KB, 시간: 552 ms 분류 분할 정복, 구현, 재귀 제출 일자 2024년 1월 12일 14:49:42 문제 설명 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 222-풀링이라 부르기로 했다. 다음은 8×8 행렬이 주어졌다고 가정했을 때 222-풀링을 1회 적용하는 과정을 설명한 것이다 종욱이는 N×N 행렬에 222-풀링을 반복해서 적용하여 크기를 1×1로 만들었을 때 어떤 값이 남아있을지 궁금해한다. 랩실 활동에 치여 삶이 사라진 종욱이..

    [백준] 11725번 : 트리의 부모 찾기 Silver2(실버2) - JAVA[자바]

    [Silver II] 트리의 부모 찾기 - 11725 문제 링크 성능 요약 메모리: 99136 KB, 시간: 2072 ms 분류 그래프 이론, 그래프 탐색, 트리, 너비 우선 탐색, 깊이 우선 탐색 제출 일자 2024년 1월 11일 23:22:34 문제 설명 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두 정점이 주어진다. 출력 첫째 줄부터 N-1개의 줄에 각 노드의 부모 노드 번호를 2번 노드부터 순서대로 출력한다. import java.io.BufferedReader; import java.io.Inpu..

    [백준] 18111번 : 마인크래프트 Silver2(실버2) - JAVA[자바]

    [Silver II] 마인크래프트 - 18111 문제 링크 성능 요약 메모리: 34724 KB, 시간: 564 ms 분류 브루트포스 알고리즘, 구현 제출 일자 2023년 12월 15일 10:10:15 문제 설명 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 땅을 파거나 집을 지을 수 있는 게임이다. 목재를 충분히 모은 lvalue는 집을 짓기로 하였다. 하지만 고르지 않은 땅에는 집을 지을 수 없기 때문에 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업을 해야 한다. lvalue는 세로 N, 가로 M 크기의 집터를 골랐다. 집터 맨 왼쪽 위의 좌표는 (0,..

    [백준] 1676번 : 팩토리얼 0의 개수 Silver5(실버5) - JAVA[자바]

    [Silver V] 팩토리얼 0의 개수 - 1676 문제 링크 성능 요약 메모리: 11488 KB, 시간: 76 ms 분류 수학 제출 일자 2023년 12월 13일 15:56:31 문제 설명 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 풀이 방법(1) 1. 일단 n의 최대값은 500임으로 그냥 숫자로는 풀 수 없고 BigInteger로 풀 수 있음 2. BigInteger을 통해서 주어진 n값까지 팩토리얼을 구해준다. 3. 뒤에서부터 확인하여 0의 개수를 센 후 출력해주면 된다. package com.pratice; import java.io.*; i..

    [백준] 2659번 : 십자카드 문제 Silver3(실버3) - JAVA[자바]

    [Silver III] 십자카드 문제 - 2659 문제 링크 성능 요약 메모리: 11584 KB, 시간: 80 ms 분류 브루트포스 알고리즘, 구현, 정렬 제출 일자 2023년 12월 13일 15:02:37 문제 설명 위와 같은 십자모양의 한 장의 카드에서, 네 모서리에 1 이상 9 이하의 숫자가 하나씩 씌여 있다. 이 네 개의 숫자 중에는 같은 숫자도 있을 수 있다. 모든 가능한 십자 카드가 주어질 때, 각각의 카드는 다음과 같은 '시계수'라는 번호를 가진다. 시계수는 카드의 숫자들을 시계 방향으로 읽어서 만들어지는 네 자리 수들 중에서 가장 작은 수이다. 위 그림의 카드는 시계방향으로 3227, 2273, 2732, 7322로 읽을 수 있으므로, 이 카드의 시계수는 가장 작은 수인 2273이다. 입력..