목록Problem Solving (49)
프로그래밍 공부
https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 언어 : C++17 환경 : VSCode gcc 8.1.0 알고리즘 문제 그대로 모든 경우를 비교 하여 등수를 매겨 주면된다 2중 for문을 사용하여 선택한 사람 보다, 덩치가 큰 사람이 있으면 등수를 올려준다. 코드 #include using namespace std; #define X first #define Y second bool solve(pair x, pair y){ if ..
https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 언어 : C++17 환경 : VSCode gcc 8.1.0 1697번 숨바꼭질과 비슷하다 하지만 여기서는 순간이동을 할 때는 0초 만에 이동하기 때문에 현재 dist의 내용에서 +1을 하지 않고 계속 BFS를 돌려주면 된다. 이때 순간이동이 이동시간이 더 빠르기 때문에 순간이동부터 먼저 계산해준다. 코드 #include using namespace std; int..
https://www.acmicpc.net/problem/15921 15921번: 수찬은 마린보이야!! 기댓값 E(X)의 정의는 ‘각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값’이다. 다시 말해, 어떤 수 x가 수열에 등장할 확률 P(x) = (x의 등장 횟수) / www.acmicpc.net 언어 : C++14 환경 : Visual Studio 2019 이 문제를 푸는 방법은 2가지가 있다 하나는 문제의 힌트를 사용해서 또는 평균값과 기댓값은 일반적으로 같다는 것을 이용하는 방법. 문제의 힌트를 사용해서 일일이 계산을 해주는 방법. #include using namespace std; struct Record { // 점수를 저장할 구조체 double s..
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 언어 : C++14 환경 : ideone.com - https://ideone.com Parametric Search를 이용한 문제입니다. 아이디어는 입력받는 값 중 최솟값은 1, 최댓값을 end 변수에 넣고 중앙값을 구해준 다음 배열의 원소를 중앙값으로 나눈 값을 cnt 변수에 더해줘서 몇 개의 랜선을 만들 수 있는지 계산했다. cnt 값이 n값 즉 필요한 랜선의 개..
https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 언어 : C++14 환경 : Visual Studio 2019 피타고라스 정리를 이용하는 문제이다. 직각삼각형에서 빗변의 길이의 제곱은 나머지 두 변의 길이의 제곱의 합과 같다. 따라서 삼각형의 세 변의 길이가 a, b , c 라 했을 때 a^2 + b^2 = c^2면 직각 삼각형이다. 코드 #include #define INT long long using namespace std; int main() { ios:..
https://www.acmicpc.net/problem/1547 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net 언어 : C++14 환경 : Visual Studio 2019 간단한 구현 문제입니다. 배열의 인덱스를 컵의 위치, 값을 컵의 번호로 생각하고 풀었습니다. 아이디어는 x, y를 입력받고 그 값을 이용해서 바꿔줘야 할 컵의 위치를 구한 후 서로 바꿔주었습니다. 이때 공은 움직이지 않는다는 말이 있는데 그 말은 계산이 끝난 후 0번 인덱스를 출력하면 된다고 판단했습니다. 코드 #include us..