코딩테스트
[level 1] K번째수 - 42748
https://school.programmers.co.kr/learn/courses/30/lessons/42748
[level 1] K번째수 - 42748 풀이코드
더보기
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int getResult(vector<int> array, vector<int> command) {
// array를 잘라서 배열 만들기
vector<int> resultVc;
for (int i = command[0] - 1; i < command[1]; i++) {
resultVc.push_back(array[i]);
}
// 배열 정렬하기
sort(resultVc.begin(), resultVc.end());
// index로 찾기
int result = resultVc[command[2] - 1];
return result;
}
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (int i = 0; i < commands.size(); i++) {
answer.push_back(getResult(array, commands[i]));
}
return answer;
}
[level 1] 두 개 뽑아서 더하기 - 68644
https://school.programmers.co.kr/learn/courses/30/lessons/68644
[level 1] 두 개 뽑아서 더하기 - 68644 풀이코드
더보기
#include <string>
#include <vector>
#include <set>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
set<int> s;
// 배열에 있는 두 개의 수를 더하는 로직
while (true) {
for (int i = 0; i < numbers.size() - 1; i++) {
for (int j = i + 1; j < numbers.size(); j++) {
s.insert(numbers[i] + numbers[j]);
}
}
break;
}
// 결과 배열(중복 제거 - set) 정렬
for (auto result : s) {
answer.push_back(result);
}
return answer;
}
[level 1] 가장 가까운 같은 글자 - 142086
https://school.programmers.co.kr/learn/courses/30/lessons/142086#
[level 1] 가장 가까운 같은 글자 - 142086 풀이코드
더보기
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
map<char, int> mp;
for (int i = 0; i < s.length(); i++) {
// 맵에 저장해서 해당 캐릭터에 대한 값이 있는지 확인
if (mp.count(s[i]) == 0) {
// 없으면 answer에 -1로 추가하고 인덱스 기록
mp[s[i]] = i;
answer.push_back(-1);
}
else {
// 있으면 answer에 지금 위치에서 기록된 인덱스를 뺀 값 추가, 인덱스 기록
answer.push_back(i - mp[s[i]]);
mp[s[i]] = i;
}
}
return answer;
}
[level 1] 푸드 파이트 대회 - 134240
https://school.programmers.co.kr/learn/courses/30/lessons/134240
[level 1] 푸드 파이트 대회 - 134240 풀이코드
더보기
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<int> food) {
string answer = "";
bool isHalf = false;
int num = 1;
while(true) {
if (isHalf == true) {
break;
}
int foodCount = food[num] % 2 == 0 ? food[num] : food[num] - 1;
if (num == food.size()) {
isHalf = true;
}
if (isHalf == false) {
for (int i = 0; i < foodCount / 2; i++) {
answer += to_string(num);
}
num++;
}
else if (isHalf == true) {
string r = answer;
reverse(r.begin(), r.end());
answer += "0";
answer += r;
}
}
return answer;
}
C++ 순열(Permutation)과 조합(Combination)
https://sonsazang.tistory.com/81
n진법 변환
// 10진법을 2진법으로 바꾸는 메서드
#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int main() {
int n = 100;
int b = 2; // 이 부분을 3으로 바꾸면 3진법!
while (n > 1) {
v.push_back(n % b);
n /= b;
}
if (n == 1) v.push_back(1);
reverse(v.begin(), v.end());
for(int a : v) {
if (a >= 10) cout << char(a + 55);
else cout << a;
}
}