알고리즘 문제풀이/프로그래머스
-
[프로그래머스/Level 1] 소수 찾기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 26. 15:47
programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 풀이 인프런에서 비슷한 문제를 풀어본 적 있어서 다음과 같이 코드를 작성했는데 시간초과가 발생했다. #include #include #include using namespace std; int solution(int n) { int cnt=0, flag; for(int i=2;i
-
[프로그래머스/Level 1] 문자열 내 마음대로 정렬하기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 24. 23:11
programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1 programmers.co.kr 풀이 풀이가 필요하진 않지만, 문자열이랑 정렬 문제에 약해서 기록하는 용도! 전체 코드 #include #include #include using namespace std; int idx; int cmp(string a, string b) { if(a[idx]!=b[idx]) { return a[idx]
-
[프로그래머스/Level 1] 크레인 인형 뽑기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 24. 18:29
programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 카카오 기출 1. moves 벡터의 요소들을 이차원 board 벡터의 열로 설정하고, 이를 기준으로 행을 탐색한다. 2. 0이 아닌 값을 만났을 때, 스택이 비어있다면 바로 push, 스택이 비어있지 않다면 스택의 top과 현재 board의 값을 비교하여 서로 같다면 pop을 해주고 사라지는 개수를 2개 더해준다. 3. 현재 board의 값을 0으로 설정해주고, break로 반복문을 종료한다. 4. 그..
-
[프로그래머스/Level 2] 주식가격 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 12. 16:56
programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 해당 문제는 Stack을 이용해서 풀 수 있는 문제입니다. 단순히 2중 반복문을 이용해서 문제를 해결하면 입력값의 최대가 100,000 이므로 시간초과가 발생합니다. (근데 프로그래머스에서는 그냥 정답으로 처리해버립니다... 테스트 케이스가 허술한듯?) 따라서 스택을 이용해서 문제를 해결해야하는데, 그러면 선형 복잡도 O(N)으로..
-
[프로그래머스/Level 3] 베스트앨범 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 10. 21:25
programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 풀이 어떻게 문제를 해결할 지 로직은 잘 짠것 같은데, 이를 구현하는데 많이 애를 먹었다. 여러개의 벡터를 통해 데이터를 유연하게 옮겨가며 자유자재로 정렬을 사용할 수 있어야하는 문제였습니다. 장르별 전체 재생 횟수를 구하기 위해서 unordered_map을 사용하였고, 이를 벡터에 옮겨준 후, 정렬하였습니다. 정렬된 벡터를 이용하여 다시 장르 내에서 많이 재생된 노래..
-
[프로그래머스/Level2] 위장 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 10. 21:25
programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 풀이 수학적인 사고력이 부족해서 잘 접근하지 못했던 문제 같습니다. 입력받은 복장들을 조합할 때 '복장을 입지 않는다.' 라는 선택지도 포함시켜야 하는 것이 문제 해결의 포인트입니다. 첫번째 입력값인 [[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]] 로 예를 들어보면 headgear에 포함되는 복장은 yellow_hat, green_turban, X(입지 않는 경우) eyewear에 포함되는 복장은 blue_sunglasses, X(입지 않는 경우) 입니다. 이를 통해 조..
-
[프로그래머스/Level 2] 전화번호 목록 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 10. 15:48
programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 풀이 문자열 벡터 phone_book에 존재하는 전화번호들의 각각의 번호를 key로 하여 그 개수를 value로 더해나갑니다. key, value형태의 데이터를 저장하기 위해서 unordered_map 자료구조를 이용하였습니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 이와 같은 데이터 입력에서, phone_book의 첫번째 번..
-
[프로그래머스/Level 1] 완주하지 못한 선수 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 9. 23:36
programmers.co.kr/learn/courses/30/lessons/42576# 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 풀이 #include #include using namespace std; string solution(vector participant, vector completion) { vector::iterator it_p, it_c; for(it_c=completion.begin();it_c!=completion.end();it_c++) { for(it_p..