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

프로그래머스 LV.2 모음사전

해당 자릿 수 별 경우의 수는 다음과 같다."(총자릿수 - 현자릿수) * 5 + 이전 경우의 수 = 현재 자릿 수의 경우의 수" 이다.5는 예외적으로 AAAAE - AAAAI 바로 바뀌므로 서로의 변환 관계는 1이다. A는 가장 첫 번째로 나온다. 따라서 0을 더해주면 된다.E는 그 다음이므로 1 따라서 알파벳 순서대로 2,3,4 이렇게 순차적으로 바뀐다. EAIOU가 word면E가 첫번째에 나오면 781번 1번 돌았다는 것이고, A가 0번 돌았다는 뜻이다.I는 3번째 자리이니, 31번을 2번 돌았다는 의미다.O는 4번째 자리이니, 6번을 4번 돌았다는 의미이다.U는 5번째 자라이니, 1번을 5번 돌았다는 의미이다. 해당 경우의 수를 다 더해주면 872번째 단어가 된다. #include #includ..

백준 골드2 1167 트리의 지름 구하기

https://www.acmicpc.net/problem/1167 트리의 지름이라서 어떻게 구할까 했는데,그냥 가장 긴 경로를 찾으면 된다. 임의의 노드 하나를 정해서BFS로 탐색하면 그 중에서 가장 긴 노드를 찾아 그 노드 값을 저장한다.어떤 정점까지가 더 긴가는,해당 정점 수 만큼의 거리를 담은 배열로 비교한다. 가장 긴 경로를 가진 정점을 구했으면,가장 긴 경로를 가진 정점에서 다시 출발한다.거리를 담은 정점 배열에서,도착지까지 가장 길었던 값을 가져오면해당 정점의 최대 길이를 알 수 있다. 이 최대 거리가 트리의 지름이다. using namespace std;vector visited;vector mDistance;typedef pair edge;vector> tree;void BFS(int n..

프로그래머스 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); } // 숫자, 빼기, 밑줄, 마침표 ..