본문 바로가기

분류 전체보기411

[C++] 백준 9461번 : 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 풀이 수열을 찾는 문제이다. P(n) 변의 길이 계산식 P(1) 1 - P(2) 1 - P(3) 1 - P(4) 2 P(1) + P(2) P(5) 2 P(2) + P(3) P(6) 3 P(3) + P(4) P(7) 4 P(4) + P(5) P(8) 5 P(5) + P(6) P(9) 7 P(6) + P(7) 표에서 확인 가능한 것처럼 P(n) = P(n-3) + P(n-2)이다. 자세하게 들여다보면.. 2021. 5. 29.
[C++] 백준 1904번 : 01타일 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 문제 풀이 n자릿수일 때 만들 수 있는 모든 가짓수는 피보나치 수열이다. 자릿수 개수 1자리 1개 2자리 2개 3자리 3개 4자리 5개 5자리 8개 6자리 13개 함수는 피보나치수열을 구현하면 된다. 시간을 줄이기 위해서 배열에 값을 저장해서 불러오는 방식으로 구현한다. 정답이 15746으로 나눈 나머지를 구하는 것인데 단순히 계산하면 n값이 50만 넘어가도 잘못된 값이 출력된다. 따라서, 함수 fib.. 2021. 5. 29.
[C++] 백준 9184번 : 신나는 함수 실행 https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제 풀이 3차원 배열을 만들어서 배열에 값을 저장한다. 이때, 배열의 크기는 -50 ~ 50까지 할당할 필요 없다. 왜냐하면 20 이상의 값은 w(20,20,20)과 동일하고, 0 이하의 값은 1과 동일하기 때문이다. 배열에 값이 존재한다면 그냥 리턴하면 되고 아니라면 맞는 조건에 따라 계산하면 된다. 이전의 문제와 동일하게 배열은 다시금 계산을 할 필요 없게 만들어준다. 느낀 점 이전의 문제와 크.. 2021. 5. 28.
[C++] 백준 1003번 : 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 풀이 int n 0 출력 1 출력 0 1 0 1 0 1 2 1 1 3 1 2 4 2 3 5 3 5 0부터 5까지 0이 출력되는 횟수와 1이 출력되는 횟수를 보면 어떤 규칙을 알 수 있다. 0이 출력되는 개수는 0부터 시작한 피보나치수열이고, 1은 1부터 시작한 피보나치 수열이다. 따라서 문제에 나온 함수를 살짝만 변형시켜서 사용하면 된다. 시간 제한이 매우 짧아 피보나치수열을 넣을 배열을 준비해두었다. 이 수열은 함수를 불러올 때 값을 계산해서 저장해 두고 특정 값을 부를 일이 있으면 계.. 2021. 5. 28.
[C++] 백준 14889번 : 스타트와 링크 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 풀이 1. 능력치를 나타내는 2차원 배열 board에 값을 입력받고 팀원의 소속을 나타내는 배열 team을 초기화해준다. 2. 입력받은 총 인원 n의 반만큼 set_teams로 팀을 나누어주고 맞게 떨어진다면 함수 get_ability_of_team을 호출한다. 3. 함수 get_ability_of_team으로 나눠진 두 팀의 능력치를 연산하고, 뺀 값을 반환한다. 중복 없이 n의 반의 크기인 팀을 나누는 함수... 2021. 5. 26.
[C++] 백준 14888번 : 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 풀이 1. 피연산자와 연산자의 개수를 배열에 담는다. 2. 연산자를 끼워넣는 함수를 실행한다. 함수 getans는 변수 cnt(피연산자의 index)와 변수 result(연산 결과)를 매개변수로 가진다. 변수 cnt 가 n의 값과 일치하면 최대, 최소를 비교하여 값을 최신화한다. 피연산자의 순서는 고정이 되어있기 때문에 다음에 올 연산자.. 2021. 5. 26.