Algorithm

Algorithm

[백준] 1197. 최소 스패닝 트리

문제 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 풀이 최소 스패닝 트리(MST)를 구하는 문제 최소 스패닝 트리는 그래프의 모든 정점을 연결하는 부분 그래프 중에서 가중치 값이 최소인 트리를 의미한다. 최소 스패닝 트리를 구하는 알고리즘은 크루스칼, 프림이 대표적이다. 해당 문제에서는 크루스칼 알고리즘을 구현만 한다면 쉽게 풀리는 문제 코드 import java.io.*; import java.util.*; public class Main { static i..

Algorithm

프로그래머스, 백준 소수판정 문제들

문제1 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이1 n개 중에서 3개를 순서에 상관없이 뽑는다. 해당 개수의 합(s)이 소수인지 판정하고 소수라면 ans++; 소수 판정: (소수는 1과 자신 만을 약수로 가지고 있는 수) Number.isInteger(Math.sqrt(s))가 true라면 소수가 아님 (제곱근의 약수를 가지고 있다는 뜻) 2~Math.sqrt(s)를 순회하며 s%i == 0 이면 소수가 아님(이외의 약수가 존재한다는 뜻) 코드1(JS) let arr, len, ans=0; function solution(nums) { arr =..

Algorithm

[백준] 배열돌리기 문제들

문제1 1 ≤ K ≤ 1,000 반시계 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 풀이1 N과 M의의 작은 값은 2로 나누어 떨어짐 한번 돌 때, Math.min(N, M) / 2 만큼 내부적으로 돌아감 1번 회전할 때마다 아래의 순서대로 동작(K번 만큼 회전) 위, 오른쪽, 아래, 왼쪽 순으로 돌릴 것임 사라지는 부분(첫 시작)을 tmp에 저장해 놓음 현재 위치를 기준으로, 다음 위치의 값을 넣어주는 방식으로 ..

Algorithm

[백준] 피보나치 문제들

문제1 n은 90보다 작거나 같은 자연수이다. 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이1 DP → 통과 import java.io.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.rea..

Algorithm

[백준] 이항계수1, 이항계수2

이항계수1 문제 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 풀이 1 ≤ N ≤ 10의 조건 → 조합의 공식대로 해결하면 됨 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = ..

Algorithm

[SWEA] 1868. 파핑파핑 지뢰찾기

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 ‘파핑 파핑 지뢰 찾기’라는 유명한 게임이 있다. 이 게임은 RXC 크기의 표를 이용하는 게임인데, 표의 각 칸에는 지뢰가 있을 수도 있고 없을 수도 있다. 표의 각 칸을 클릭했을 때, 그 칸이 지뢰가 있는 칸이라면 ‘파핑 파핑!’이라는 소리와 함께 게임은 끝난다. 지뢰가 없는 칸이라면 변이 맞닿아 있거나 꼭지점이 맞닿아 있는 최대 8칸에 대해 몇 개의 지뢰가 있는지가 0에서 8사이의 숫자로 클릭한 칸에 표시된다. 만약 이 숫자가 0이라면 근처의 8방향에 지뢰가 없다는 것이 확정된 것이기 때문에 그 8방향의 칸도 자동으로 숫자를 표시해 준다. 실제 게임에서는..

Algorithm

[SWEA] 1468. 장훈이의 높은 선반

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 장훈이는 서점을 운영하고 있다. 서점에는 높이가 B인 선반이 하나 있는데 장훈이는 키가 매우 크기 때문에, 선반 위의 물건을 자유롭게 사용할 수 있다. 어느 날 장훈이는 자리를 비웠고, 이 서점에 있는 N명의 점원들이 장훈이가 선반 위에 올려놓은 물건을 사용해야 하는 일이 생겼다. 각 점원의 키는 Hi로 나타나는데, 점원들은 탑을 쌓아서 선반 위의 물건을 사용하기로 하였다. 점원들이 쌓는 탑은 점원 1명 이상으로 이루어져 있다. 탑의 높이는 점원이 1명일 경우 그 점원의 키와 같고, 2명 이상일 경우 탑을 만든 모든 점원의 키의 합과 같다. 탑의 높이가 B ..

Algorithm

[백준] 2251. 물통

문제 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부을 수 있는데, 이때에는 한 물통이 비거나, 다른 한 물통이 가득 찰 때까지 물을 부을 수 있다. 이 과정에서 손실되는 물은 없다고 가정한다. 이와 같은 과정을 거치다보면 세 번째 물통(용량이 C인)에 담겨있는 물의 양이 변할 수도 있다. 첫 번째 물통(용량이 A인)이 비어 있을 때, 세 번째 물통(용량이 C인)에 담겨있을 수 있는 물의 양을 모두 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, C가 주어진다. 출력 첫째 줄에 공백으로 구분하여 답을 출력한다. 각 ..

거북목을 가진 김기린
'Algorithm' 카테고리의 글 목록 (11 Page)