본문 바로가기

코딩테스트/프로그래머스

(55)
[Level 2][C++] 카펫 #include #include using namespace std;vector solution(int brown, int red) { vector result; for (int col = 3; col
[Level 2][C++] 최댓값과 최솟값 #include #include #include // streamstring의 헤더#include using namespace std;string solution(string s) { vector nums; stringstream ss(s); // 문자열을 stringstream에 집어넣음. string numString; while(ss>>numString) //공백 기준으로 쪼갠다. { nums.push_back(stoi(numString)); //문자열을 int로 변환해서 배열에 집어넣는다. } sort(nums.begin(), nums.end()); //오름차순으로 정렬 //int를 string으로 변환 strin..
[Level 2][C++] 최솟값 만들기 #include #include#include using namespace std;int solution(vector A, vector B){ sort(A.begin(), A.end()); sort(B.begin(), B.end(), greater()); int answer = 0; for(int i=0; i
[Level 2][C++] 행렬의 곱셈 #include #include using namespace std;vector> solution(vector> arr1, vector> arr2) { vector> answer(arr1.size()); for(int i=0; i i 첫번째 행렬의 행, j 첫번째 행렬의 열이자 두번째 행렬의 행, k 두번째 행렬의 열
[Level 2][C++] 전화번호 목록 풀이 1 - 해시테이블 이용#include #include using namespace std;bool solution(vector phone_book) {//전화번호 앞자리를 기준으로 해시 테이블에 정리한다. vector> hashT(10); for(int i=0; i 풀이 2 - 정렬해서 푼다.#include #include #include using namespace std; bool solution(vector phone_book) { sort(phone_book.begin(), phone_book.end()); //내림차순으로 정렬 for(int i=0; i
[Level 2][C++] H-Index #include #include #include using namespace std;int solution(vector citations) { sort(citations.begin(), citations.end(), greater()); for(int i=0; i citations[i]) return i; if(i+1 == citations[i]) return i+1; } } 맨 끝에서 부터 논문 수를 센다. 논문 수([i+1])>=논문 인용수(citations[i])면 return citations[i]로 문제가 풀릴 줄 알았으나.... 다 틀렸다. 왜 틀렸나 생각해보니 {1,2,3,5,6,7,..
[Level 2][C++] JadenCase 문자열 만들기 #include #include using namespace std;string solution(string s) { int count =1; //공백기준 첫번째 문자 for(int i=0; i '9'){ if(count==1) s[i] = toupper(s[i]); //대문자로 만들어주는 함수 else s[i] = tolower(s[i]); //소문자로 만들어주는 함수 } count ++; //공백기준 몇 번째 문자인지 센다. } return s;}
[Level 2][C++] N개의 최소공배수 #include #include #include using namespace std;int solution(vector arr) { //제일 큰 수를 알기 위해 정렬. sort(arr.begin(), arr.end()); int answer = 1; //제일 큰 수 (arr.back())은 아래 반복문의 결과에 따라 바뀐다. for (int i = 2; i 맨위 arr.back()에도 영향을 줌. } } return answer;}
[Level 2][C++] 예상 대진표 #include using namespace std;int giveNum(int a){ if(a%2==0) return a/2; else return a/2+1;}int tornumant(int a, int b){ if(a==b) return 0; a = giveNum(a); b = giveNum(b); return 1+tornumant(a, b); //토너먼트 치룰 때 마다 1씩 증가. }int solution(int n, int a, int b){ return tornumant(a,b);} 반복문으로 2를 계속 나눠서 같은 숫자가 나올 때까지 카운트 해도 되는데,재귀함수를 활용해보고 싶어서 재귀함수로 풀었다.
[Level 2][C++] 소수 만들기 #include #include using namespace std;int solution(vector nums) { vector odds; vector evensOne; vector evensTwo; //짝짝 집어넣는 곳 vector addThree; //짝짝홀, 홀홀홀 더한 애들을 집어 넣는 곳. //홀수 짝수 분류 for (int i = 0; i 1) { for (int i = 0; i 2) { for (int i = 0; i  짝수 홀수 안나누고, 그냥 반복문 3개 겹쳐서 전부 3개씩 더한 다음에 알아내는 방법도 있는데효율성이 안좋을 거 같아 나눠서 계산했다.