https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net #include #include using namespace std; int N; int answer = 9; long long ans = -1; void backtracking(int n, int cnt, int jarisu, string s) { if (cnt == jarisu) { answer++; if (answer == N) { ans = stoll(s); } return;..
https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr #include using namespace std; int numbering(int n){ if (n%2==0) return n/2; else return (n+1)/2; } int solution(int n, int a, int b) { int answer = 0; while (a!=b){ a=numbering(a); b=number..
https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr #include #include #include using namespace std; int gcd(int a, int b){ int a1=max(a,b); int b1=min(a,b); while (b1){ int c=a1%b1; a1=b1; b1=c; } return a1; } int lcm(int g, int a,..
https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr #include #include #include using namespace std; bool floyd[101][101]={false,}; int solution(int n, vector results) { int answer = 0; for (auto r : results) floyd[r[0]][r[1]]=true; for (int k=1; k
https://programmers.co.kr/learn/courses/30/lessons/72412 >target; int cnt=lower_bound(m[q].begin(), m[q].end(), target)-m[q].begin(); answer.push_back(m[q].size()-cnt); } return answer; } map을 이용해서 풀었다. 그리고 점수를 탐색할 때 미리 정렬해줘서 이분탐색하여 효율성을 높이는게 중요하다. 해당 info에서 나올 수 있는 모든 경우의 수를 map의 key에 넣어주고, value는 점수를 넣어준다. 예를 들어, "java backend junior pizza 100" 이라면, 2^4=16가지의 경우를 map의 키로 삼고, value를 100으로 하는 것이..
https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net #include #include #include using namespace std; vector v; vector ans; int N, M, x; bool check[9] = { false, }; void dfs(int cnt, vector &c) { if (cnt == M) { ans.push_back(c); return; } for (int i = 0; i < N; i++) { if..
https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr #include #include #include using namespace std; int solution(vector priorities, int location) { int answer = 0; queue q; priority_queue pq; for (int i=0; i
https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net #include #include #include #include #include using namespace std; int dx[4] = { -1,1,0,0 }; int dy[4] = { 0,0,-1,1 }; struct blockGroup { vector members; int num_rainbow; pair standard_block; bool operator b.standard_bloc..
https://programmers.co.kr/learn/courses/30/lessons/42746?language=cpp# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr #include #include #include using namespace std; struct{ bool operator()(string a, string b) const{ return a+b>b+a; } } cmp; string solution(vector number..
https://programmers.co.kr/learn/courses/30/lessons/42842?language=cpp 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int sero=1; int garo=((brown+4)/2)-sero; while (garo>=sero){ if (garo*sero==brown+yellow){ an..