콘솔창 & 윈도우창/코딩 테스트 69

프로그래머스 LV.1 모의고사

https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr    해당 문제는 완전탐색 문제이다. 완전 탐색이란,가능한 경우의 수를 모두 나열하면서 원하는 답을 찾는 방법이다.따라서 해당 경우의 수를 하나하나 if문으로 찾아주면 된다.  내가 처음에 낸 풀이#include #include #include using namespace std;vector solution(vector answers) { vector answer; vector results = { 0,0,0 }; ..

프로그래머스 LV.2 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음에 짠 코드는 next_permutation을 이용해서 구현하였다.next_permutation은 모든 경우의 수를 출력해 주기 때문에,가장 큰 경우의 수만 계속해서 담으면 될 거라 생각했기 때문이다.string solution(vector numbers) { string answer = ""; sort(numbers.begin(), numbers.end()); string n = ""; do { n = "..

프로그래머스 LV.2 오픈채팅방 (카카오 코테)

https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제는 결국 key값은 변동이 없고 value만 바뀌는 문제이다.따라서 map을 사용하는 것이 적절하다. 1. 해당 key는 유저 아이디이며 value는 유저의 닉네임이 된다. 2. 각 단어의 공백은 stringstream ss 라는 변수를 통해 시프트 연산자를 통해 공백을 기점으로 단어를 끊어 받을 수 있다. 3. Enter, Leave, Change를 기점으로 분기해주면 된다. 3-1. Enter과 Changevalue가 추가되거나 변..

프로그래머스 LV.2 귤 고르기

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내가 통과한 코드int solution(int k, vector tangerine) { int answer = 0; vector box(10000001); for (int i : tangerine) { box[i]++; } sort(box.rbegin(), box.rend()); for (int i = 0; i < box.size(); i++) { if (box[i] < k) { answer++; k -= box[i]; } else { ans..

프로그래머스 LV.2 기능개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586 해당 문제는 다시 푸는 문제이다. 이게 내가 짠 코드이다.#include #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer; int cnt = 0; deque work; for (int i = 0; i < speeds.size(); i++) { work.push_back({ progresses[i], speeds[i]}); } while (!work.empty()) { cnt = 0; for (auto &i : work) { i.first += i.seco..

프로그래머스 LV.2 더 맵게

이 문제는 간단한 예외처리 요하므로예외처리를 할 게 딱히 많지 않다.예외 처리의 경우1. scoville의 size()가 2보다 작은 경우에는 비교를 할 수 없다.그 경우에는 K보다 작은지만 체크해 준 뒤 -1을 반환하면 된다.전반적인 로직 간략 설명1. 가장 작은 스코빌 지수 + (두 번째로 작은 스코빌 지수 * 2)는힙을 사용한 우선순위 큐로 관리할 수 있다. 1. 작은 스코빌 지수는 자동으로 정렬이 되므로,top으로 읽어온 뒤 해당 값을 임시로 저장해둔다. 2. pop을 통해 작은 값을 꺼내 준뒤 그 2번째 값을 top으로 읽어온 뒤임시 저장 값에 += 두 번째 * 2 라는 로직을 추가해준다.이후 pop해주기 3. 임시 저장 값을 우선순위 큐에 넣어주면 자동 정렬된다. 위 과정을 조건이 만족할 때 ..

프로그래머스 LV.1 신규 아이디 추천

https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   해당 문제는 결국 규칙에 맞는 아이디를 추천하는 것이다.아이디 규칙은 다음과 같다. 아이디의 제한 사항은 다음과 같다.  string solution(string new_id) { string answer = ""; // 소문자 치환 // 레퍼런스는 포인터를 쓰는 것과 같음. for (char& ch : new_id) { ch = tolower(ch); } // 숫자, 빼기, 밑줄, 마침표 ..

프로그래머스 LV.2 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해시를 이용한 해결책 1. 종류별로 분류 2. 입지 않는 경우 (해당 종류를 쓰지 않는 경우) 3. 전체 조합 즉 해당 종류별로 의상의 개수를 곱해주면 된다.#include #include #include using namespace std; int solution(vector clothes) { int answer = 1; // 옷을 종류별로 구분 unordered_map m; for (vector clothe : clothes) { m[cl..