본문 바로가기

코딩테스트

(70)
[Level 2][C++] 점프와 순간 이동 #include using namespace std;int solution(int n){ int ans=0; while(n>0) { ans += n%2; n/=2; } return ans;} 2를 곱한 위치 만큼 간다? => 목표 하는 숫자를 2로 계속 나눈다. 그리고 나눌때마나 나오는 나머지 만큼 이동한다.
[Level 2][C++] 영어 끝말잇기 #include #include #include using namespace std;//해쉬 테이블에 문자열을 집어 넣는 함수bool inputTable(string s, vector>& hashT) { //해시 키는 맨 앞에 있는 알파벳이다. int key = s.front()-'a'; if(hashT[key].empty()) //비어있으면 집어넣고 끝. { hashT[key].push_back(s); return true; } else { for(int i=0; i solution(int n, vector words) { //맨 앞 알파벳에 따라 분류되도록 해시 테이블을 만들었다. 26은 알..
[Level 2][C++] 구명보트 #include #include #include #include using namespace std;int solution(vector people, int limit) { //우선 사람들을 무게로 내림차순으로 정렬한다. 큰->작은 sort(people.begin(), people.end(), greater());//전체 사람 수에서 반을 나누고. 그 중 제일 작은 사람의 무게를 저장한다.//왜냐하면 다른 사람에게 더해졌을 경우 0으로 만들 것이기 때문에. int minM = people[people.size()/2];//딱 반만큼. 크기가 큰 사람들끼리 Limit을 넘지 않는 범위에서 합친다. for (int i = 0; i limit) brea..
[Level 1][C++] N으로 표현 #include #include #include using namespace std;int solution(int N, int number) { vector> arr(8); //vector 한 줄당 1개의 N을 씀. N을 쓸 수 있는 건 최대 8번 if (N == number) return 1; else arr[0].push_back(N); //맨 첫번째 줄에 N을 집어넣음. int i = 1; //N 2개 사용 부터 계산 while (i  풀고나서 다른 사람들의 풀이를 보니 재귀함수를 정의해서 푸시는 분들이 많았다.내 방식은 N을 최소 5번 써야 답이 나온다면, N을 1번만 쓴 답과 4번만 쓴  답을 계산 시킨다. 또 2번만 쓰고 ..
[Level 1][C++] 체육복 #include #include using namespace std;int solution(int n, vector lost, vector reserve) { vector students(n+2); fill(students.begin(), students.end(), 1); students[0]=-1; students[n+1]=-1; for(int i=0; i=1) answer++; return answer;}
[Level 1][C++] 모의고사 #include #include #include using namespace std;vector solution(vector answers) { vector> students(3); students[0] = {1,2,3,4,5}; students[1] = {2,1,2,3,2,4,2,5}; students[2] = {3,3,1,1,2,2,4,4,5,5}; vector counts = {0, 0, 0}; for(int j=0; j copyCounts = counts; sort(counts.begin(), counts.end(), greater()); vector answer; for(int i=0; i
[Level 1][C++] 완주하지 못한 선수 #include #include #include using namespace std;string solution(vector participant, vector completion) { string answer; sort(participant.begin(), participant.end()); sort(completion.begin(), completion.end()); for(int i=0; i
[Level 1][C++] 2016년 #include #include #include using namespace std;void inputDate(int& a, int& b){ while (1) { try { cout > a; if (a 12) throw 0; cout > b; if (b 31) throw 0; break; } catch (int expn) { cout month = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31,..
[Level 1][C++] K번째 수 #include #include #include using namespace std;vector solution(vector array, vector> commands) { vector answer; for(int i=0; i test; for(int j=commands[i][0]-1; j
[Level 1][C++] 문자열 내 마음대로 정렬하기 #include #include #include using namespace std;int idx;bool compare(string a, string b){ if(a[idx] != b[idx]) return a[idx] solution(vector strings, int n) { idx = n; sort(strings.begin(), strings.end(), compare); //정렬 함수. 유저가 정의한 함수(compare)대로 정렬한다.return strings;}