알고리즘 문제풀이
-
[프로그래머스/SQL] SELECT (MySQL)알고리즘 문제풀이/프로그래머스 2020. 10. 31. 00:27
https://programmers.co.kr/learn/courses/30/parts/17042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID; 어린 동..
-
[프로그래머스/Level 2] 영어 끝말잇기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 31. 00:06
programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 [tank, kick, know, wheel, land, dream, mother, robot, tank] [3,3] 5 [hello, observe, effect, take, either, recognize, encourage, ensure, establish, hang, gather, refer, reference, estimate, executive] [0,0] programmers.co.kr 풀이 1. map을 선언한 후 words의 0번째 원소를 키로 하여 1증가 시킨다. 2. 인덱스 번호 1부터 words의 원소들의 값을 키로 하여 1증가 시킨다. 3. 이때 해당 키로 ..
-
[프로그래머스/Level 2] 점프와 순간 이동 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 30. 18:29
programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 풀이 처음에 BFS로 풀었는데, 숫자가 최대 10억까지 이므로 절대 BFS로 효율성 검사를 통과할 수 없다. 해결방법은 n에서 0으로 가는 것을 생각하면 되는데, 최대한 2를 나눌수록 0에 가까워지므로 2로 나누면서, 2로 나눈 나머지가 1인 경우에만 res를 해준다. (점프한 경우이므로) 전체 코드 #include using namespace std;..
-
[프로그래머스/Level 2] 소수 만들기 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 30. 16:47
programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 풀이 DFS로 조합 구현하여 문제를 해결하였는데, next_permutation을 이용해 순열로도 문제를 해결할 수 있다. 전체 코드 #include #include using namespace std; int answer; bool isPrime(int n) { if(n < 2) return false; for(int i = 2; i < n; i++) {..
-
[프로그래머스/Level 2] 스킬트리 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 30. 16:03
programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 문자나 문자열을 가지고 순서를 비교해야 한다면 map 자료구조를 이용하는 것을 반드시 생각해보자 전체 코드 #include #include #include using namespace std; int solution(string skill, vector skill_trees) { int answer = 0; unordered_map um; // 선행 스킬 등록 : (C, 1), (B, 2), (D, 3) for(int i = 0; i < skill.size(); i++) { um[skill[i]] = i + 1; } for(string s : skill..
-
[프로그래머스/Level 2] 124 나라의 숫자 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 29. 18:23
programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 수학적 사고에 취약해서 너무 어려웠다. 구글 검색을 통하여 해결하였다. 알고리즘은 다음과 같다. 1. 1, 2, 4 3개의 숫자로 10진수가 변환되므로, 3진수를 이용할 생각을 한다. 2. 3진수는 0, 1, 2로 이루어져있는데 이를 1, 2, 4로 변경하기 위해서 3으로 나눈 값의 나머지가 0이면 문자열에 4를 추가하고 해당 몫에 1을 빼주었다. 4. 3으로 나눈 나머지가 0이 아닌 경우는 나머지를 문자열에 추가한다. 5. 처음의 입력 정수가 0이 될 때까지 계속 반복한다. #include #include using namespace std..
-
[프로그래머스/Level 2] 멀쩡한 사각형 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 29. 17:01
programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 가로가 w, 세로가 h인 직사각형을 대각선으로 자를 때 사용할 수 없게 되는 사각형의 개수가 몇개가 나오는지 규칙을 파악 해야한다. 항상 이러한 규칙을 파악할 때는 작은 단위로 분할하는 것이 좋은 것 같다. 또한 각각의 입력값의 크기가 클때, long long으로 변수를 복사하고 하는게 좋은 것 같다. w=1, h=1 : (1+1)-1=1 w=..
-
[프로그래머스/Level 2] 기능개발 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 28. 16:23
programmers.co.kr/learn/courses/30/lessons/42586?language=cpp 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 풀이 앞에서 부터 차례대로 작업의 진도를 비교해야하므로, 큐를 이용하는 것이 좋다고 판단하였다. 1. 배포 기간을 계산해 큐에 집어 넣는다. 2. 큐가 전부 pop 될 때까지 현재 큐의 front를 저장한 now와 pop한 후의 front를 비교하여 now가 크거나 같을 때까지 계속 cnt를 증가시킨다. (이때 큐가 현재 비어있지 않은 상태인 것..