algorithm

[C++] 백준 알고리즘 1526번 (가장 큰 금민수)

Dev:P 2021. 8. 8. 09:37
반응형

문제


이번에 다뤄볼 문제는 1526번 문제 '가장 큰 금민수'입니다.

가장 큰 금민수 문제에서 연습해야하는 key-point는 입니다.

 

큐(queue)란 컴퓨터의 기본적인 자료 구조의 한가지로,

먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식을 뜻합니다.

 

금민수는 4와 7로만 이루어진 수를 말합니다.
입력받은 n을 4가 될때까지 1씩 줄여나가며 해당수를 각 자리수 별로 잘라 큐에 집어 넣습니다.
큐를 하나씩 빼며 4혹은 7을 갖는 수 라면 count값을 증가시켜줍니다.
큐에 들어갔던 자리수의 갯수(rear)가 count된 수와 같다면 이는 4와 7로만 이루어진 수 이므로
금민수입니다.

 

아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다.


 

코드(C++)

#include <iostream>
using namespace std;
int q[1000001];
int front = 0, rear = 0;
 
int main() {
 
    int n = 0;
    int count = 0;
 
 
    cin >> n;
 
    for (n; n >= 4; n--) {
        int i = n;
        while (i != 0) {
            q[rear++] = i % 10;
            i = i / 10;
        }
 
        while (front != rear) {
            if (q[front] == 4 || q[front] == 7) count++;
            front++;
        }
 
        if (count == rear) {
            cout << n << endl;
            break;
        }
        else {
            front = 0;
            rear = 0;
            count = 0;
        }
    }
 
    return 0;
}
 

 

반응형