코딩 테스트9 [C++][백준][정렬]2751 - 수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이 문제의 함정은 로직보다, C++에서 제공하는 기능을 생각없이 사용 했을때 빠지기 쉽다. 예제코드 두개를 준비하였다. 예제코드 1 #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); int total_no; std::cin >> total_no.. 2023. 3. 6. [백준][c++]14500-테트로미노 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 백준의 실버5 문제 "4920-테트리스 게임" 과 매우 유사하다. 차이점은 이 문제에서는 주어진 테트로미노를 회전뿐만 아니라 대칭도 시켜도 된다는 점이다. 인풋으로 주어진 숫자를 2차원 배열에 넣어주고, 순차적으로 순회를 하며 대응 가능한 모든 테트로미노를 대입해보면 쉽게 정답을 얻을 수 있다. 풀이 자체는 단순하지만, 테트로미노를 잘못 찍으면 디버깅하기가 어려우므로 신중하게 해야 한다. 각 도형.. 2022. 6. 12. [백준][C++]11399-ATM https://www.acmicpc.net/problem/11399 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라진다고 한다. 예시에서도, 인출 하는데 소요되는 시간이 가장 적은 2번 사람이 먼저 돈을 인출하고, 차례로 5번,1번,4번 그리고 마지막으로 3번사람이 돈을 인출 할 때 시간의 합의 최솟값을 얻을 수 있다고 한다. 그렇다면, 둘째 줄에 주어진 시간 데이터를를 오름차순으로 정렬한다면 간단하게 원하는 순열을 얻을 수 있다. #include #include #include #include using namespace std; int main() { int n, a; std::vector data; std::vector sum_data; cin >> n; //데이터 입력.. 2022. 5. 27. [백준][C++]1158-요세푸스 문제 0 자료구조의 이해도를 묻는 문제이다. STL에서 제공하는 queue 를 사용하면 쉽게 풀 수 있다. 주어진 1번부터 N명까지의 사람들을 큐에 집어넣고, 큐가 완전히 empty가 될때까지 계속 사람을 제거하는 작업을 수행해 준다. #include #include using namespace std; int main() { int k,n; cin >> n >> k; queue q; for(int i = 1; i 2022. 5. 27. [프로그래머스]키패드 누르기(c++) https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 복잡한 알고리즘을 요구하는 문제는 아닙니다. 단, 처음에 문제를 주의 깊게 읽지 않으면 많은 시간을 낭비 할 수 있습니다. #include #include #include #include ; #include using namespace std; stru.. 2022. 5. 16. [프로그래머스]완주하지 못한 선수(C++) https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 중복된 이름을 가진 선수가 있을 수 있으므로, multiset이 적합합니다. 참가한 선수들의 이름을 multiset에 저장하고, 완주한 선수들의 이름이 저장된 vector를 for-each 순회를 시키면서 multiset에 저장된 선수들을 지워줍니다. 최종적으로, 완주하지 못한 선수만이 multiset에 남아 있게 됩니다. #include #.. 2022. 5. 16. [프로그래머스]소수만들기(c++) https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 순열(permutation)의 이름만 기억하면 매우 쉽게 C++에서도 주어진 숫자들 중에서 원하는 개수 만큼 뽑아서 묶을 수 있습니다. #include #include #include using namespace std; bool is_prime(int n) { for (int i = 2; i * i 2022. 5. 16. [프로그래머스]평균구하기(c++) https://programmers.co.kr/learn/courses/30/lessons/12944 코딩테스트 연습 - 평균 구하기 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요. 제한사항 arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. 입출력 예 arr programmers.co.kr 매우매우 쉬운 문제이지만, std::accumulate에 대해 잊지 않기 위해서..... #include #include #include #include using namespace std; double solution(vector arr) { double answer = 0; answer = (acc.. 2022. 5. 16. [프로그래머스]숫자 문자열과 영단어(c++) https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr #include #include #include #include using namespace std; unordered_map number_map = { {"zero",0 }, {"one", 1 }, {"two", 2 }, {"three", 3 }, {"four", 4 }, {"five", 5 }, {"six", 6 }, {"seven", 7 }, {.. 2022. 5. 16. 이전 1 다음