CodingTest Practice/Programmers 33

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

프로그래머스 : 전화번호 목록 (C++, Lv.2, 해시)

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 소스코드 아래 실패 코드를 보면서 시간복잡도도 완전히 오버되고 로직이 틀렸음을 깨닫고 완전히 새로 짰다. 그 와중에 두 string이 같은지 확인하는게 strcmp 인줄 알고 계속 왜 틀렸나 했더니 그냥 == 쓰거나 compare를 써야 하는 것이었다. string 에 대해 제대로 알아야 할 것 같다. https://blockdmask.tistory.com/..

프로그래머스 : 완주하지 못한 선수 (C++, Lv.1, 해시)

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 해시 문제를 풀 줄 몰라서 블로그에 올라온 정답과 해시에 대한 공부를 하고 문제를 풀어보았다. https://gracefulprograming.tistory.com/3 [C++] map vs hash_map(unordered_map) 개요 hash_map은 비표준 Container인데 반해(stdext namespace에 포함) unorder..