본문 바로가기

728x90

수학

[백준알고리즘] 11444번: 피보나치 수 6 -C++ [백준알고리즘] 11444번: 피보나치 수 6 -C++ 11444번: 피보나치 수 6 (acmicpc.net) 11444번: 피보나치 수 6 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 골드 난이도면서 정답 비율이 높길래 되게 쉬운 문제인 줄 알았다. 근데 난생처음 보는 풀이를 보고 따라 풀었다. 이 문제를 푸는 방법은 2가지가 있다고 한다. 행렬 곱을 이용한 방법과 방정식을 이용한 방법이다. 아래는 방정식으로 문제를 풀었다. 문제를 푸는 방식은 백준 블로그의 글을 참고했다. 피보나치 수를 구하는 여러가지 방법 (acmicpc.net) 피보나치 수를 구하는 여러가지 방법 피보나치 수는 다음과 같이 정의되는 수열입니.. 더보기
[백준알고리즘] 4796번: 캠핑 -C++ [백준알고리즘] 4796번: 캠핑 -C++ 4796번: 캠핑 (acmicpc.net) 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 그리디의 다른 쉬운 문제를 풀었다. 이 문제도 예전에 풀었던 ATM 문제와 같이 SJF 방식으로 풀면 된다. 이게 그리디지 ㅋㅋ 하면서 쉬워서 기분 좋았다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제 풀이 어떤 경우에서든 연속된 \(P\) 일 중에 최대 \(L\) 일만 사용할 수 있어야 한다. 즉, \(V+0 \sim V+P+0\) 까지도 \(L\) 일만 사.. 더보기
[백준알고리즘] 1057번: 토너먼트 -C++ [백준알고리즘] 1057번: 토너먼트 -C++ 1057번: 토너먼트 (acmicpc.net) 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 김지민과 임현수가 만나는 라운드를 출력하는 문제다. 이 문제는 수학적으로 쉽기도 하고, 직접 구해도 풀 수 있는 문제다. 나는 여기서 직접 만나는 경우를 구했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 먼저, 앞서 수학적으로도 구할 수 있고, 직접 일일이 구할 수도 있다고 했다. 수학적으로 구할 수 있는 방법은 다음과 같다. 현재 라운드에서 참가자의 번호가 \( N.. 더보기
[백준알고리즘] 1027번: 고층 건물 -C++ [백준알고리즘] 1027번: 고층 건물 -C++ 1027번: 고층 건물 (acmicpc.net) 1027번: 고층 건물 세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작) www.acmicpc.net Gold IV 단계의 난이도인데 생각보다 쉬웠던 것 같다. 문제 자체도 크게 어렵지 않은 것 같고.. 논리적으로도 명확하게 주제를 준 것 같다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제의 요구 사항부터 살펴보도록 하겠다. 선분으로 나타낼 수 있는 빌딩들이 존재한다. 각 빌딩의 지붕에서 다른 빌딩의 지붕으로 선분을 그린다. 다른 빌딩의 지붕과의 선분 사.. 더보기
[백준알고리즘] 1024번: 수열의 합 -C++ [백준알고리즘] 1024번: 수열의 합 -C++ 1024번: 수열의 합 (acmicpc.net) 1024번: 수열의 합 첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다. www.acmicpc.net 10억 이하의 자연수 N과 100 이하의 자연수 L이 주어졌을 때, 수열의 합이 N이면서 길이가 100 이하인 수열을 찾는 문제다. 이번 문제의 경우 쉽게 접근할 수 있었으나, 예상치 못한 곳에서 오버플로우가 발생해서 골치아팠다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 문제에 대한 접근법은 실제 여러 수를 직접 해보면서 알아냈다. 먼저, 홀수는 \(l = 2\)로 모두 찾아지기 때문에 이 경우를.. 더보기
[백준알고리즘] 1019번: 책 페이지 -C++ [백준알고리즘] 1019번: 책 페이지 -C++ 1019번: 책 페이지 (acmicpc.net) 1019번: 책 페이지 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. www.acmicpc.net 어렵다..... 결국 풀이를 봤다.... 풀이 보고도 이해를 겨우 했다.... 다른 분들의 코드들도 모두 같길래, 아이디어를 가지고 비슷한 방식으로 이래저래 엄청 시도해봤는데 전혀 되는 게 없었다.. 다들 백준 님이 푸신 방법대로 풀었다.. 백준 님의 풀이는 링크의 강의자료를 보면 된다.. 결국 나도 일반적으로 다들 푼 방법으로 코드를 올린다.. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 백준님의 풀이는 문제를 \(A\)에서.. 더보기
[백준알고리즘] 9655번: 돌 게임 -C++ [백준알고리즘] 9655번: 돌 게임 -C++ 9655번: 돌 게임 (acmicpc.net) 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 동적계획법동적 계획법 문제이지만, 동적 계획법을 코드에 직접 작성하지 않아도 풀 수 있는 간단한 문제다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 처음 문제를 봤을 때에는 마지막 돌에 두는 모든 경우가 한 사람인 건가? 싶었다. 게임을 하는데 항상 누군가 승자가 정해져있다는 느낌의 문제였기 때문에 실제로 종이에 돌의 번호를 그려보고 상근이와 창영이가 두는 번호를 생각해봤다. 그랬더니 진짜로 겹치지 않는다는 것을 알게 되었다. 예제처럼 돌이 5개 있다고 생각해보자. 상근이가 항상 게.. 더보기
[백준알고리즘] 4153번: 직각삼각형 -C++ [백준알고리즘] 4153번: 직각삼각형 -C++ 4153번: 직각삼각형 (acmicpc.net) 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 저번과 마찬가지로 while의 조건문 안에서 cin을 통해서 입력을 받았다. std::cin은 istream 객체를 return 하지만 if와 while의 조건문 안에서는 bool을 return 하게 된다. istream이 아닌 현재 상태에 따라 좋은 입력 상태일 경우 true를 return 하며 좋지 않은 입력 상태일 경우 false를 return한다. 헤더의 sort를 사용해 입력.. 더보기

728x90