[알고리즘 기말예제문제] 홀수피라미드(C++)

2022. 6. 12. 23:29· Skils/Algorithm
목차
  1. 📕문제
  2. 📕입력
  3. 📕출력
  4.  
  5. 💡코드

📕문제

아래 그림과 같이 삼각형 모양으로 숫자를 쌓기로 했다.

위와 같이 경표는 끝도 없이 피라미드를 쌓을 때, N층의 제일 왼쪽, 오른쪽에 쓰게 될 숫자가 무엇일지 예측해보자.

 

📕입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 층의 번호 N(1≤N≤109)이 주어진다.

📕출력

각 테스트 케이스마다 ‘#x’(x는 테스트 케이스 번호를 의미하며 1부터 시작한다)를 출력하고,

각 테스트 케이스마다 N층의 제일 왼쪽, 오른쪽에 쓰게 될 숫자를 공백으로 구별하여 출력한다

 

📗입력 예시

3
1
2
3
// 테스트 케이스 개수
// 첫 번째 테스트 케이스, N = 1, K = 1
// 두 번째 테스트 케이스, N = 3, K = 7
// 세 번째 테스트 케이스, N = 9, K = 17

📗출력 예시

#1 1 1
#2 3 7
#3 9 17 
// 첫 번째 테스트 케이스 결과
// 두 번째 테스트 케이스 결과
// 세 번째 테스트 케이스 결과

 

정리

  • 삼각형은 희소행렬의 모양이다.
  • n층의 원소의 개수는 1+2(n-1) 개다.
  • n층까지의 총 원소 개수는 2^n이다.
  • n층의 왼쪽의 원소들과 오른쪽의 원소를 구해야 한다.
    • n층의 왼쪽의 원소는 n-1층까지의 원소의 개수만큼 1과 떨어져 있다.
      • n-1층까지의 총원소의 개수는 2^(n-1)이다.
    • 따라서 n층 왼쪽의 원소는 2*(n-1)^2+1이다.
    • n층의 오른쪽 원소는 1부터 n층의 원소의 개수-1만큼 떨어져 있다.
      • n층의 원소의 개수는 2^n이다.
    • 따라서 n층 오른쪽의 원소는 2*n^2-1이다.

 

💡코드

/*
홀수 피라미드 문제
1층에는 1개 , 2층에는 3개 3층에는 5개 4층에는 7개 등등 등차수열로 증가함.
n층은 1+2*(n-1)개의 사다리가 나올것이다.
왼쪽은 층의 원소수 * 2만큼 차이난다.
4층일때 원소의 갯수는 1+3+5+7 = 16
3층일때 원소의 갯수는 9 층의제곱수만큼 원소가 있다.
만약의 5층이면 1+2*n()
왼쪽 오른쪽 숫자 출력.
*/
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
vector<unsigned long long int> l;
vector<unsigned long long int> r;
void solve(int high);
int main()
{
int T;
cin >> T;
unsigned long long int high;
vector<int> H;
unsigned long long int m = 0;
H.resize(T);
long long int left, right;
for (int i = 1; i <= T; i++)
{
cin >> high; // high층일때를 구해야함.
if (high == 1)
{
left = 1, right = 1;
}
else
{
left = (high-1)*(high-1)*2 + 1;
right = 2*(high)*(high)-1;
}
cout << "#" << i << " " << left << " " << right << endl;
}
}

 

문제출처

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWvzGUKKPVwDFASy 

 

저작자표시 (새창열림)

'Skils > Algorithm' 카테고리의 다른 글

[알고리즘 기말 이론]  (0) 2022.06.15
[알고리즘] Intractability & NP-Theory  (0) 2022.06.13
[알고리즘-C++] 계산복잡도  (0) 2022.05.31
[알고리즘-C++] - 외판원 순회 문제(Branch & Bound)  (1) 2022.05.31
[알고리즘-C++] 외판원 순회 문제(Dynamic Programming)  (0) 2022.05.29
  1. 📕문제
  2. 📕입력
  3. 📕출력
  4.  
  5. 💡코드
'Skils/Algorithm' 카테고리의 다른 글
  • [알고리즘 기말 이론]
  • [알고리즘] Intractability & NP-Theory
  • [알고리즘-C++] 계산복잡도
  • [알고리즘-C++] - 외판원 순회 문제(Branch & Bound)
재한
재한
안녕하세요 💻
재한
짜이한
전체
오늘
어제
  • 분류 전체보기 (502)
    • Skils (116)
      • Android (50)
      • C++ (5)
      • Kotlin (36)
      • Algorithm (24)
      • Server (1)
    • CodingTest (228)
      • Programmers (45)
      • Baekjoon (183)
    • Experience (8)
      • 후기(코딩테스트,프로그램,프로젝트) (8)
    • Computer Science (70)
      • Design Pattern (2)
      • OOP (2)
      • Computer Architecture (14)
      • OS (2)
      • Software Engineering (3)
      • DataBase (8)
      • Network (39)
    • 학교 (75)
      • R프로그래밍 (26)
      • 회계와 사회생활 (17)
      • 컴퓨터학개론 (20)
      • it기술경영개론 (12)

블로그 메뉴

  • 홈
  • 태그
  • 카테고리
  • 글쓰기
  • 설정

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
재한
[알고리즘 기말예제문제] 홀수피라미드(C++)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.