CodingTest Practice/Programmers 35

프로그래머스 : JOIN (SQL, ORACLE)

https://programmers.co.kr/learn/courses/30/lessons/59042?language=oracle 코딩테스트 연습 - 없어진 기록 찾기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 입양테이블은 왼쪽에 두고 입소 테이블과 LEFT JOIN을 한 후, 입소 테이블의 ID가 비어있는 컬럼을 조회 -- 코드를 입력하세요 SELECT OUTS.ANIMAL_ID AS ANIMAL_ID, OUTS.NAME AS N..

프로그래머스 : SUM,MAX,MIN (SQL, ORACLE)

https://programmers.co.kr/learn/courses/30/lessons/59415?language=oracle 코딩테스트 연습 - 최댓값 구하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr DATE 타입도 기본적인 연산이나 집계함수가 가능 -- MAX를 사용하는 방법 SELECT MAX(DATETIME) FROM ANIMAL_INS; -- 인라인뷰로 조회하는 방법 SELECT * FROM ( SELECT DATET..

프로그래머스 : SELECT (SQL , ORACLE)

https://programmers.co.kr/learn/courses/30/lessons/59034?language=oracle 코딩테스트 연습 - 모든 레코드 조회하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr -- SELECT - 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; https://programmers.co.kr/learn/courses/30/lessons/590..

프로그래머스 : 가장 먼 노드 (C++, Lv.3, 그래프)

https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 그래프 유형이라지만 문제 풀 때는 bfs개념을 섞어서 풀었다. 먼저 각 노드의 인접 리스트를 생성한 후, 1번 노드에 근접한 노드부터 방문해 체크하고 큐에 삽입한다. 한 번 체크된 노드는 큐에 삽입하지 않는다. 거리 비교는 level 변수를 이용해 이전보다 더 긴 거리이면 갯수를 초기화하고 같으면 1을 추가한다. (혼자 풀었다 뿌듯...) 소스코드 #include #include #include using namespace std;..

프로그래머스 : 프린터 (C++, Lv.2, 큐)

https://programmers.co.kr/learn/courses/30/lessons/42587?language=cpp 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 혼자 힘으로 풀긴 했지만 너무 많은 시간이 걸렸다 ㅜ 문제를 읽어보면 딱 봐도 큐를 이용해 목록을 탐색해야 한다는 걸 알았지만 정렬된 목록은 어떻게 담아야 할지에 대해 고민을 많이 했다. 정렬된 순서를 스택으로 담아서 풀어야 하나 했는데 내가 생각했던 방식대로라면 스택을 2개나 쓰는 비효율적인 코드만 생각났다. 그러다가 이미 우선 순위에 대한..

프로그래머스 : 여행경로 (C++, Lv.3, DFS)

https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 여행 티켓 이름을 먼저 정렬하고 난 뒤 여행 티켓을 통해 경로를 탐색하면 처음으로 나온 경로가 알파벳 순으로 가장 빠른 여행지의 경로가 된다는 것을 블로그에서 보고 그 성질을 이용해 풀었다. 소스코드 #include #include #include using namespace std; vector airport; bool fin..

프로그래머스 : 단어변환(C++, Lv.3, BFS)

https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 처음에는 dfs로 풀려 했는데 제대로 풀지도 못한 것 같고 우선 간단한 테스트 만으로도 시간 초과가 나서 bfs로 풀었다. 이번에도 시간초과가 나는 것을 막기 위해 한 번 탐색한 문자열은 큐에 넣지 않고 탐색했다. 레벨3인데 혼자 고민해서 어떻게든 풀 것 만으로도 너무 감사하다... 소스코드 #include #inclu..

프로그래머스 : 카펫 (C++, Lv.2, 완전탐색)

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr 격자의 가로가 세로보다 길거나 같다는 점을 이용해 탐색할 첫 가로의 길이를 격자 수의 제곱근의 천장함수로 잡아 완전탐색하였다. 소스코드 #include #include #include #include using namespace std; int length; bool cmp(int a, int b) {return a > b;} vector solution(i..

프로그래머스 : 체육복 (C++, Lv.1, 탐욕법)

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 소스코드 #include #include using namespace std; int solution(int n, vector lost, vector reserve) { // 체육복 갯수를 저장하는 n크기의 벡터 저장 vector students(n,1); int answer = 0; //체육복 갯수 맞추기 for(int i : reserve) students[i..

프로그래머스 : 가장 큰 수 (C++, Lv.2,정렬)

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 필자는 numbers안 숫자들을 모두 같은 자릿수로 바꿔 비교한 다음에 정렬해 넣으려고 했으나 결국 실패하고 말았다ㅜ 그래서 블로그를 찾아보니 문자열로도 충분히 합친 문자열의 대소를 분류할 수 있다는 것을 알게 되었다. algorithm 헤더 내의 sort 에 대해 좀 더 공부해볼 생각이다. htt..