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

백준 실버4 1920 수 찾기

https://www.acmicpc.net/problem/1920  이 문제는 다음과 같이 풀 수 있다.1. 배열의 길이를 입력 받는다.2. 해당 배열에 들어갈 원소들을 순차적으로 입력 받는다3. 비교할 배열의 길이를 입력 받는다   (굳이 배열에 담지 아니해도 된다, 설명 편의상 배열이라고 가정하였다.)4. 먼저 생성된 배열과 비교할 배열의 원소와 일치한다면 1을, 아니라면 0을 출력한다. 해당은 문제는 탐색을 통해 풀 수 있다.필자는 이진 탐색으로 풀었다.using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); std::cout.tie(NULL); int n; cin >> n; vec..

프로그래머스 LV.2 전화번호 목록

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해당 문제는 전화번호가 접두어인가? 를 판별하면 된다.접두어이면 FASLE, 아니면 TRUE를 반환한다. 제한 사항폰북의 길이가 1 ~ 1000000이다.각 전화번호의 길이는 1 ~ 20 사이이다.같은 전화번호는 중복해서 들어가 있지 않다 해당 문제의 접근법은 3가지가 있다. 1. 반복문을 활용 - 시간이 너무 오래 걸린다. 폰북의 길이가 너무 길다. - 이중 루프를 돌게된다.(양방향 비교) 2. 정렬과 반복문을 활용 - 이중 루프..

프로그래머스 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..