백준 24268, 2022는 무엇이 특별할까?

jeong seok ha·2022년 5월 9일
0

코테 문제풀이

목록 보기
21/39

문제

https://www.acmicpc.net/problem/24268

풀이

간단한 순열 문제였다. 최대 입력이 10개이기 때문에 10!을 하면 약 300만 밖에 나오지 않아서 쉽게 풀 수 있었다. 순열은 c++의 next permutation을 사용하였다.

실수

  • vs에서는 제대로 돌아가는데 백준에서는 계속 컴파일에러가 떠서 대체 무슨 오류인지 한 30분간 생각했던것 같다. 알고보니 pow 함수가 algorithm에 구현되어 있는 것이 아니라 cmath에만 구현되어 있었고 vs에서는 참 편리하게 알아서 포함시켜주었기 때문에 오류가 안났던 것이었다. 백준에서는 그저 컴파일 에러라고만 떠서 한참 찾았는데 온라인 컴파일러인 ideone을 통해 오류 메세지를 보고 문제를 해결할 수 있었다. 다음부터는 온라인 컴파일러나 gcc compiler를 애용하는 습관을 들여보자.
  • next permutation을 어떻게 사용하는지 몰라 다시 봄, STL 정리하기

코드

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using namespace std;

vector<int> vec;

int main() {

	int n, d, result;

	scanf("%d %d", &n, &d);

	for (int i = 0; i < d; i++) {

		vec.push_back(i);

	}


	do {

		result = 0;

		if (vec[0] != 0) {

			for (int i = d - 1; i >= 0; i--) {

				result += ((int)pow(d, i) * vec[(d - 1) - i]);

			}

			if (result > n) {

				printf("%d", result);
				return 0;

			}

		}

	} while (next_permutation(vec.begin(), vec.end()));

	printf("-1");

	return 0;

}

profile
기록용 블로그

0개의 댓글

관련 채용 정보