전체 글
[C++] 프로그래머스 - 모의고사
map을 써서 풀려다 포기하고 오랜만에 배열을 쓰려고 했더니 낯설어서 비교적 쉬운 문제임에도 시간을 좀 잡아먹었다. #include #include #include using namespace std; vector solution(vector answers) { vector answer; int a[5] = { 1, 2, 3, 4, 5 }; int b[8] = { 2, 1, 2, 3, 2, 4, 2, 5 }; int c[10] = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }; int vec[3] = { 0, }; int max_num; for (int i = 0; i < answers.size(); i++) { if (answers[i] == a[i % 5]) vec[0]++; if (an..
[C++ STL] set 사용법 위주 공부
set 은 노드 기반 컨테이너로, 이진 균형 트리다. 때문에 삽입, 삭제, 검색 등의 작업이 용이하다. 숫자든 문자든 원소의 중복을 알아서 없애준다는 이점이 있어 사용법을 익혀두면 좋다. 원소는 insert 멤버 함수로 삽입되면 자동으로 정렬(오름차순)된다. set 헤더( #include )에 들어있고, vector랑 겹치는 멤버함수들이 있어 vector 공부 후 보니 좀 더 편한 것 같다. Set 초기화 set 변수명 기본 선언 set 변수명(복사할 변수) 선언 후 복사한 값으로 초기화 set 변수명 = 복사할 변수 선언 후 복사한 값으로 초기화 set 변수명(복사할 변수.begin(), 복사할 변수.end()) 선언 후 복사한 값으로 초기화 Set 반복자(iterator) s.begin() / s.e..
[C++] 프로그래머스 - 폰켓몬 (set)
내 풀이 ) set을 쓰긴 했는데 set 사용법과 algorithm 헤더에 min까지 들어있는지 잘 몰라서 코드가 길어졌다. #include #include #include using namespace std; int solution(vector nums) { int answer = 0; int nums_length = nums.size(); set kind; for (int i = 0; i kind.size() ? kind.size() : nums_length/2; return answer; } 다른 사람 풀이 참고) 1. set 선언할 때 vector의 반복자 멤버함수인 be..
[C++] 프로그래머스 - 키패드 누르기 (배열 노가다 + 지향할 풀이)
문제 내 풀이 풀이 방법 ) - 1, 4, 7 : L - 3, 6, 9 : R - 2, 5, 8, 0 : ① 엄지 거리 - 가까운 손 (dist가 더 작은 것) ② 거리 같을 때 - 왼손잡이냐 오른손잡이냐 거리 : 각 키패드 번호에서 각 번호까지의 거리를 담은 배열들을 선언했다. 배열의 인덱스가 0부터 시작하는 점을 이용해 각 자리까지의 거리를 각 인덱스 자리에 맞게 넣었다. 현재 위치 : 왼손 위치는 left, 오른손 위치는 right에 담고 초기 위치를 -1로 설정했다. 눌러야할 키패드가 2,5,8,0일 때만 거리와 왼손/오른손잡이 여부를 생각한다. 왼손/오른손의 현재 위치를 받아 각각에 대한 switch 문을 실행한다. 현재 위치에 따라 미리 만들어뒀던 키패드 자리의 거리배열을 선택하여 눌러야할 번..
[C++] 프로그래머스 - 징검다리 건너기
주의) '느리게' 징검다리 건너기... 효율성 0... #include #include using namespace std; int solution(vector stones, int k) { int answer = 0; int jump = 0; while (jump 0) { stones[i]--; jump = 0; } else { jump++; if (jump >= k) return answer; } } answer++; } return answer; } 이렇게 돌리면 코드가 힘겹게 정확성 테스트를 완료하고 효율성 테스트에서는 모조리 시간초과 실패를 띄운다. ㅎㅎ....ㅠ..
[C++] 프로그래머스 - 두 개 뽑아서 더하기 (벡터, sort, find)
내 풀이 #include #include #include #include using namespace std; vector solution(vector numbers) { vector answer; vector::iterator isFind; for (int i = 0; i < numbers.size()-1; i++) { for (int j = i+1; j < numbers.size(); j++) { isFind = find(answer.begin(), answer.end(), numbers[i] + numbers[j]); if (isFind == answer.end()) answer.push_back(numbers[i] + numbers[j]); } } sort(answer.begin(), answer..
[C++] 프로그래머스 - K번째 수 (벡터 공부)
#include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; vector temp; for (int i = 0; i < commands.size(); i++) { temp = array; sort(temp.begin()+ commands[i][0] - 1, temp.begin()+ commands[i][1]); answer.push_back(temp[commands[i][0] + commands[i][2] - 2]); } return answer; } sort와 vector를 이용해서 문제를 풀어보았다. 배열을 사용할 때는 algorithm 헤더의 sort를 이용하려..
[C++] 프로그래머스 hash 1- 완주하지 못한 선수 (vector만 이용 / 해시 이용)
vector와 algorithm 헤더를 이용한 풀이 sort를 이용해 참가자와 완주자 배열을 정렬해주면, 같은 이름의 참가자들은 각 배열에서 같은 위치에 위치하게 된다. (이 때 sort는 algorithm 헤더를 선언해줘야 사용 가능하다.) 만약 완주하지 못한 참가자가 있다면 각 위치에 다른 이름이 위치하게 되므로 return으로 해당 참가자 이름을 돌려주고, 끝까지 다른 위치가 없다면 참가자가 한명 많으므로 마지막 참가자 이름을 돌려준다. #include #include #include #include using namespace std; string solution(vector participant, vector completion) { sort(participant.begin(), particip..