풀이 과정 1. 최대 공약수를 구한다. 2. 최대 공약수를 통해 최소 공배수를 구한다. + 알게 된 점 최소 공배수는 해당 수들의 곱에 최대 공약수를 나눈 값이다. 최대 공약수는 0이 될 때까지 각 수를 나누어 알 수 있다. => 유클리드 호제법 #include using namespace std; int gcd(int x, int y) { return x % y == 0 ? y : gcd(y, x % y); } int lcm(int x, int y) { return (x * y) / gcd(x, y); } int solution(vector arr) { int answer = arr[0]; for (int i = 1; i < arr.size(); i++) { answer = lcm(answer, arr..
풀이과정 1. N, K와 N개의 동전의 가치를 입력받는다. 2. dp배열을 통해 bottom-up 방식을 이용하여 접근한다. 3. for문을 통해 dp[j] +=dp[j-money[i]]를 이용한다. (현재의 가치는 현재의 가치에서 돈을 뺀 과거의 가치를 더해주면 된다.) (과거의 값을 계속 더해줘서 현재의 가치가 업데이트된다.) #include #include using namespace std; int N,K, answer; int money[101]; int main(){ scanf("%d %d",&N,&K); vector dp(K+1); for(int i=1;i
풀이과정 1. 각 스테이지와 같은 번호를 저장한다. 2. count와 s_size를 통해서 실패율을 인덱스와 같이 저장한다. 3. compare함수를 통해 정렬한다. #include #include #include using namespace std; bool compare(pair &a, pair &b){ if(a.second==b.second) return a.firstb.second; } vector solution(int N, vector stages) { vector answer; int count=0, s_size=stages.size(); vector fail; //index, 실패율 for(int i=1;i
풀이과정 1. 숫자면 collect에 넣는다. 2. 문자면 tmp에 하나씩 넣어서 해당 문자열의 번호를 찾는다. 3. collect에 넣은 숫자들을 answer에 더해준다. #include #include #include using namespace std; int solution(string s) { int i,j; int answer = 0; string tmp=""; vector word{"zero","one","two","three","four","five","six","seven","eight","nine"}; vector collect; for(i=0;i=48 && s[i]
풀이과정 1. 입력된 n의 1의 개수를 구한다. 2. n의 값을 하나씩 크게 해서 1의 개수가 같을 때 해당 n을 반환한다. #include #include using namespace std; int toBinary(int n){ int count=0; while(n>0){ if(n%2==1) count++; n/=2; } return count; } int toBigger(int n, int count){ while(1){ int tmp_one=toBinary(++n); if(tmp_one==count) break; } return n; } int solution(int n) { int answer = 0; int one_count=toBinary(n); //현재 n의 1의 개수 return toBi..
풀이과정 1. 모든 문자열을 소문자로 바꿔준다. 2. find함수를 이용하여 현재 v에 있는지 없는지 확인한다. 3. 있다면 hit으로 해당 위치에 있는 문자열을 지우고 다시 넣는다. 4. 없다면 miss로 현재 v 사이즈에 따라서 그냥 넣을지, 삭제하고 넣을지를 결정한다. #include #include #include using namespace std; int solution(int cacheSize, vector cities) { int answer = 0; vector v; for(int i=0;i
#include #include #include using namespace std; string solution(string new_id) { int i, end_count = 0; string answer = new_id; for (i = 0; i = 65 && answer[i] = 'a' && answer[i] = '0' && answer[i] = 16) { answer.erase(15, answer.length()); } printf("6-1. 다른 문자 제거 결과: %s \n", answer.c_str()); if (answer[answer.length() - 1] == '.') answer.erase(answer.leng..
풀이 과정 1. 문자열을 2개의 문자열만 추출해서 m에 넣는다. 2. 해당 문자열을 s1, s2에 넣는다. 3. s1과 s2를 통해서 유사도를 구한다. 문제 설명칸에 이와 같은 설명이 있어 이처럼 min, max를 이용하는 방식을 사용했다. #include #include #include using namespace std; map m; map s1; map s2; void jacquard(string s, int k) { for (int i = 0; i 122 || s[i + 1] 122) continue; if ((s[i] >= 91 && s[i] = 91 ..
풀이 과정 1. 이전 단어의 끝과 다음 단어의 첫 글자를 비교한다. 2. 중복된 단어가 들어갔을 수 있으니 map을 이용하여 처리한다. 3. pass를 통해서 끝까지 진행되었는지 알아본다. 4. 중단된 경우 i값을 통해서 몇번째 단어인지 알아낸다. #include #include #include using namespace std; bool pass = true; vector solution(int n, vector words) { int i; vector answer; map overlap; overlap[words[0]]++; for (i = 1; i < words.size(); i++) { char prev = words[i - 1][words[i - 1].length() - 1]; char nex..
풀이 과정 1. genres를 탐색하며 musicTotal과 genresTotal에 값을 더한다. 2. 장르를 정렬하기 위해서 벡터로 넣어서 정렬한다. 3. for문으로 musicTotal에서 장르별 횟수를 정렬한다. 4. count를 하여서 2개씩만 answer에 넣어준다. #include #include #include #include using namespace std; bool cmp(const pair& a, const pair& b) { return a.second > b.second; } bool cmp2(const pair& a, const pair& b) { if (a.second == b.second) return a.first b.s..
풀이 과정 1. 예외사항인 집합이 존재하지 않는 경우 처리한다. 2. s를 n에 맞게 나눈다. 3. s에서 나온 숫자만큼을 뺀다. 4. 해당 숫자를 answer에 넣는다. #include #include using namespace std; vector solution(int n, int s) { vector answer; if (s / n 0; i--) { int tmp = s / i; s -= tmp; answer.push_back(tmp); } return answer; }
풀이 과정 1. 예시를 통해서 A에서는 작은 수부터, B에서는 큰 수부터 곱해지는 걸 알 수 있다. 2. sort함수를 이용해서 A, B를 정렬한다. 3. A와 B의 길이가 같으니 for문을 통해서 A는 0부터, B는 뒤에서부터 곱해주며 answer에 더한다. #include #include #include using namespace std; int solution(vector A, vector B) { int answer = 0; sort(A.begin(), A.end()); sort(B.begin(), B.end()); for(int i=0;i
- Total
- Today
- Yesterday
- RDS
- 최고의집합
- AWS
- Auditing
- 영어끝말잇기
- dp
- 정수삼각형
- qemu
- 백준
- 괄호회전하기
- 머신러닝
- PostgreSQL
- 프로그래머스
- interrupt
- PasswordEncoder
- 뉴스클러스터링
- 운영체제
- 실패율
- 다음큰숫자
- 시스템콜
- Android
- 응답코드
- ubuntu
- 우분투설치
- springboot
- 최솟값구하기
- 프리티어
- OS
- 이진변환반복하기
- xv6
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |