[백준] 2164번 카드 2 해설 및 풀이 (Java)
·
Study/코딩 테스트
백준 2164번 : 카드2 해설 및 풀이https://www.acmicpc.net/problem/2164 문제N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다.이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 ..
[백준] 1654번 랜선 자르기 해설 및 풀이 (Java)
·
Study/코딩 테스트
백준 1654번 : 랜선 자르기 해설 및 풀이 (Java)https://www.acmicpc.net/problem/1654 문제집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다.이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.)편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 ..
[백준] 1920번 수 찾기 해설 및 풀이 (Java, Python)
·
Study/코딩 테스트
백준 1920번 수 찾기 해설 및 풀이https://www.acmicpc.net/problem/1920 문제N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.입력첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.출력M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 문제 유형 자료 구조 정렬 이분 탐색 해시를 ..
[백준] 2108번 통계학 해설 및 풀이 (Java, Python)
·
Study/코딩 테스트
https://www.acmicpc.net/problem/2108 문제수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.산술평균 : N개의 수들의 합을 N으로 나눈 값중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값최빈값 : N개의 수들 중 가장 많이 나타나는 값범위 : N개의 수들 중 최댓값과 최솟값의 차이N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.출..
[백준] 11403번 경로 찾기 해설 및 풀이 (Python)
·
Study/코딩 테스트
백준 11403번 경로 찾기https://www.acmicpc.net/problem/11403문제 유형그래프 이론 그래프 탐색 최단 경로 플로이드–워셜 풀이 방법 도출정점 수 N과 N x N 인접 행렬이 주어진다.i에서 j로 길이가 양수인 경로가 존재하는지 구합니다.플로이드-워셜 알고리즘을 사용하여 모든 정점 쌍 (i, j)에 대해 도달 가능한지 판단합니다.만약 i → k 그리고 k → j가 가능하면 i → j도 가능하므로, graph[i][j] = 1로 갱신합니다.모든 노드 쌍에 대해 반복합니다.도달 가능한 경우 1, 불가능한 경우 0을 출력합니다. 시간 복잡도3중 for문 : O(N³)핵심 코드 삽입 및 설명import sysfrom typing import Listdef floyd_warshall..