티스토리 뷰

C++/Baekjoon

백준15596, 4673

그레고리 2021. 9. 29. 18:58
728x90

모든 문제는 c++로 풀었습니다.

 

15596번

백터에 대한 이해가 필요하다. 

#include <iostream>
using namespace std;

/*Vector : 자동으로 메모리가 할당되는 배열 
    vector<int> v; 비어있는 백터 생성
    vector<int> v(5); 기본값이 0으로 초기화된 size 5인 백터
    vetor가 가지는 다양한 맴버 함수가 있다. 
*/

#include <vector> 
long long sum(std::vector<int> &a) {
	long long ans = 0; // 64bit이상의 값 표현 
    for(int i=0;i<a.size();i++){ // vector.size() : 원소 갯수 리턴 
        ans += a[i];
    }
	return ans;
}

백터의 맴버 함수 정리

vector.size() : vector의 원소 갯수
vector.capacity() : vector에게 할당된 공간의 크기 리턴 
vector.front() : 첫번째 원소 참조
vector.back() : 마지막 원소 참조
vector.pop_back() : 마지막 원소 제거
vector.push_bak(1) : 1을 뒤에 넣는다.
vector.resize(n,0) : n으로 리사이즈한다. 늘어난 경우 0으로 채운다. 
vector[i] : 해당 원소 참조
vector.at(i) : 해당 원소 참조. [i]보다 느리지만 범위를 확인하기 때문에 안전하다. 

이 외에도 다양한 맴버 함수가 있다.

4673번

10까지만 생각해보면

i=1) 1+1 = 2

i=2 ) 2+2 = 4

i=3) 3+3 = 6

i=4) 4+4 = 8

i=5) 5+5 = 10

(이 이상은 10보다 크기 때문에 상관없다.)

이렇게 해서  2,4,6,8,10이 제외되고, 1,3,5,7,9 이렇게 5개가 셀프넘버로  출력될 것이다.

#include <iostream>
using namespace std;

/*셀프넘버. 
d(n) :  d(n)을 n과 n의 각 자릿수를 더하는 함수. n은 양의 정수.
    d(33) = 33+3+3 = 39
d(n)을 사용해서 무한 수열을 만들 수 있다. ( d(n), d(d(n)), d(d(d(n))) ... )
    n=33이면, 39, 51 57 ... 
이때 n 은 d(n)의 생성자라고 한다. 
    33은 39의 생성자이다. 
생성자가 없는 숫자를 셀프 넘버라고 한다. 
    100보다 작은 셀프넘버는 총 13개이다. :1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97

문제 : 10000보다 작거나 같은 셀프넘버를 한줄에 하나씩 출력하라. 
*/

int d(int n);

int main(void){
    int num = 10001; // max 숫자 지정
    bool N[10001] = {false}; // initialize : true
    for(int i=1; i<num; i++){ // 1~ 10000
        if( d(i) < num ){            
            N[d(i)] = true; // 자기 자신이 아닐때.
        }
    }
    
    for(int i=1; i<num; i++){
        if(N[i] == false) cout << i << endl;
    }
}

int d(int n){
    int sum = n;
    int num = n;

    while(1){
        if(num == 0) break;
        sum += num%10;
        num = num/10;
    }
    return sum;
}

 

728x90

'C++ > Baekjoon' 카테고리의 다른 글

백준1157  (0) 2022.02.04
백준2675  (0) 2022.02.03
백준10809  (0) 2022.02.03
백준11720  (0) 2022.02.02
백준 2557, 10869, 10818  (0) 2021.09.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함