본문 바로가기

전체 글

(105)
[프로그래머스][1차] 비밀지도 주어진 정수 배열을 이진수 형태의 문자열로 바꾼 후 정답을 출력 문자열에 저장했다. #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector answer; for(int i = 0; i = 0) { A += '1'; arr1[i] -= divA; } else { A += '0'; } divA /= 2; } while(div > 0) { if(arr2[i] - div >= 0) { B += '1'; arr2[i] -= div; } else { B += '0'; } div /= 2; } for(int j = 0; j
[프로그래머스]문자열 내 마음대로 정렬하기 간단하게 버블소트로 구현했다. 좀 더 간단하게 하려면 반복문 안의 else if를 지우고 반복문 순회하기 전에 sort를 사용하면 된다. 반복문을 사용하지 않으면서 더 간결하게 하려면 sort에 compare를 조정해서 사용하는 방법도 있다. #include #include // #include using namespace std; void swap(string *a, string *b) { string temp = *a; *a = *b; *b = temp; } vector solution(vector strings, int n) { vector answer; // sort(strings.begin(), strings.end()); for(int i = 0; i strings[j]) { swap(stri..
[프로그래머스]2016년 별 생각없이 스르륵 풀면 되는 문제 현재까지의 모든 날을 더해서 요일의 수(7)로 나눠주면 답을 구할 수 있다. #include #include using namespace std; int mon[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; string week[7] = { "FRI","SAT","SUN","MON","TUE","WED","THU" }; string solution(int a, int b) { string answer = ""; int day = b - 1; for(int i = 0; i
[프로그래머스]체육복 예외처리가 중요한 문제다. 정렬한 후에 잃어버린 번호와 여벌을 가진 번호가 중복된다면 서로 짝을 맞출 수 있도록 예외처리 한다면 쉽게 문제를 해결할 수 있다. #include #include #include #include using namespace std; int solution(int n, vector lost, vector reserve) { int answer = n; int idx = 0; int count = 0; sort(lost.begin(), lost.end()); sort(reserve.begin(), reserve.end()); for(int i = 0; i
[프로그래머스]K번째수 그저 지문을 따라서 풀면 되는 아주 쉬운 문제. #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; vector temp; for(int i = 0; i
[프로그래머스]모의고사 mod를 이용해 각 유저의 답을 순회할 수 있도록 했다. 답 확인이 끝난 후 정답의 횟수에 따라 조건문을 진행함으로써 answer을 구했다. #include #include #include using namespace std; int user1[5] = { 1, 2, 3, 4, 5}; int user2[8] = { 2, 1, 2, 3, 2, 4, 2, 5 }; int user3[10] = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }; vector solution(vector answers) { vector answer; int count[3] = { 0 }; for(int i = 0; i
[프로그래머스]완주하지 못한 선수 무작정 풀다보면 시간초과가 날 수 있는 문제다. 두 배열에서 같은 선수가 없다면 바로 return하면 되기 때문에 정렬을 해준다. 정렬된 배열에서 같은 이름을 가진 선수가 이어서 나온다면 다음 인덱스로 넘어가고 count++하여 두 배열에서 동명이인이 몇명인지 확인할 수 있도록 한다. 이름이 다르거나 동명이인의 수가 다르다면 리턴해서 결과를 얻으면 끝! #include #include #include using namespace std; string solution(vector participant, vector completion) { vector val; string answer = ""; sort(participant.begin(), participant.end()); sort(completion...
[프로그래머스]124나라의 숫자 3으로 나눈 나머지를 더하는 방식으로 진행하면 결과를 도출할 수 있다. 124숫자를 사용해야 하므로 3으로 나눈 나머지의 경우인 0, 1, 2에서 0은 4로 변환해서 사용해준다. 하지만 여기서 문제점이 발생하는데 나머지가 0으로 나올 때 값이 정확히 떨어지지 않는다. 1, 2, 4 세가지 수가 연속으로 나올 때 몫이 같야야 순회가 되는데 4일 때는 3으로 딱 떨어져서 몫이 1, 2일 때보다 +1되는 걸 볼 수 있다. 그래서 주어진 값을 나눈 후 나머지가 0일 때(변환하면 4)는 -1을 해야 정상적인 결과를 볼 수 있다. #include #include using namespace std; string solution(int n) { string answer = ""; while(n > 0) { int t..