코딩테스트/C++ 문제풀이

    [백준] 회전초밥

    https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net https://life318.tistory.com/151 [백준] 회전초밥 https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주 life318.tistory.c..

    [백준] 회전초밥

    https://www.acmicpc.net/problem/2531 2531번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ www.acmicpc.net 우선 문제부터 간단하게 요약하면, 회전 초밥 벨트에 초밥들이 놓여 있는데, 연속한 k개와 쿠폰의 초밥을 먹을 때, 초밥 종류가 가장 많아지게 먹는다면, 총 몇개의 초밥을 먹을 수 있는지를 구해야 하는 문제입니다. 이 문제의 경우, 접시의 수가 30,000개로 엄청 크지 않으므로, 1칸씩 window를 이동하며, 내부의 초밥 종류를 새로 계산하는 방식으로 해결..

    [백준] 피보나치 함수

    https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net dp를 이용한 문제입니다. 우선 문제부터 간단하게 요약하면, 문제에서 주어진 함수처럼 피보나치 수를 구할 떄, f(1)과 f(0)의 호출 횟수를 출력해야 하는 문제입니다. 간단하게 1의 호출 횟수를 저장하는 dp array와 0의 호출 횟수를 저장하는 dp array를 만들어 두고, 그 array에 대해 피보나치 수열을 진행하면 됩니다. 간단한 예시로, f(5)가 호출 되면, 이 때 0의 호출횟수와 1의 호출 횟수는 f(4)에서의 횟수 + f(3)에서의 횟수 이기 때문입니다. 실제 구현은 아래..

    [백준] 문자열 반복

    https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 간단한 구현 문제입니다. 숫자와 문자열이 주어질 때, ex) 2 ABC 해당하는 문자열의 각 문자들을 숫자 만큼 반복한 문자열을 출력하는 문제입니다. ex) AABBCC string을 적절히 가공하여, 새로운 string을 제작하면 됩니다. 실제 구현은 아래와 같습니다. #include int main(){ int t; std::cin >> t; std::cin.ignore(); for(..

    [백준] 평균

    https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 구현문제입니다. 우선 문제부터 간단하게 요약하면, 점수들이 주어질 때, 각 점수에 (점수/(점수의 최댓값) * 100) 을 한 점수들의 평균을 구해야 하는 문제입니다. 최대점수를 구하고, 각 점수들에 다시 연산을 한 뒤 평균을 내주는 작업을 진행하면 됩니다. 실제 구현은 아래와 같습니다. #include #include double change(double k); double g_max_va..

    [백준] 상수

    https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 간단한 구현문제입니다. 우선 문제부터 간단하게 요약하면, 두 숫자가 들어오면 해당하는 숫자를 뒤에서 부터 읽어 더 큰숫자를 print해야 합니다. 실제로 숫자 두개를 입력받아서 뒤집어서 대소 비교후, 출력하는 과정을 진행하면 됩니다. 구현은 아래와 같습니다. #include #include int main(){ std::string i,j; int num_i, num_j; std::cin >> i; std::..

    [백준] 숫자의 합

    https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, N개의 숫자들이 붙어서 들어오면, 각각 한자리 숫자로 간주하고 더헀을 때의 결과를 return 하는 문제입니다. 각각의 숫자들을 벡터 배열로 만들어서 더해주는 형태로 구현하였습니다. 실제 구현은 아래와 같습니다. (벡터 연습을 벡터를 사용하였는데 사용하지 않고 풀면 훨씬 간단하게도 해결이 가능합니다.) #include #include #include int main(){ int N; int ans = 0; std::str..

    [백준] 음계

    https://www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, 1 2 3 4 5 6 7 8 이렇게 8개의 숫자가 들어올 때, 이 것이 ascending인지, descending인지, mixed인지를 출력해야 하는 문제입니다. ascending과 descending은 각각 1 2 3 4 5 6 7 8, 8 7 6 5 4 3 2 1로 정해져 있기에 만약 이 두개가..