목록알고리즘 (129)
이숭간 공부기록
https://programmers.co.kr/learn/courses/30/parts/17042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1번 -- 코드를 입력하세요 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID 2번 -- 코드를 입력하세요 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 3번 -- 코드를 입력하세요 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick'; 4번 --..
https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 문제유형 : 그래프,,라는데 나는 좀 다르게 풀었다. 문제풀이 : 나를 이긴사람을 부모노드로 나에게 진 사람을 자식노드로 구분하여 저장 나의 부모노드의수 + 자식노드의 수 = n-1이면 나의 위치는 정해진것이 되므로 answer를 1 증가시킨다. 이때 나의 앞에 있는 애들 ( 즉 나를 이긴애들) 의 자식에게 내 자식을 추가한다. 나의 뒤에있는 애들 ( 즉 나에게 진 애들) 의 부모에게 나의 부모를 추가한다. 정답코드 : def solution(n, results): a..
https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/ MaxDoubleSliceSum coding task - Learn to Code - Codility Find the maximal sum of any double slice. app.codility.com 문제풀이 : 어려웠던 문제다. 다른풀이를 참고해서 풀었다. 핵심은 Y를 기준으로 왼쪽의합과 오른쪽의 합을 구해서 이것의 최대를 구하는것이다. N이 십만이므로 O(N)시간에 풀어야한다. 여기서 왼쪽합의 시작은 인덱스 0부터 하고, 오른쪽합의 시작은 인덱스 n-1 즉 맨 양쪽끝으로 잡는데 이렇게하면 배열길이가 8이라고할때 (0,4,7)보다 (2..
https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 문제유형 : 행렬, 구현 문제풀이 : 2021 카카오페이인턴에서도 이런 행렬구현 문제가나왔다. 행렬의 부분을 따로빼서 조작하고 다시 붙인뒤 반복조작하는 느낌 카카오공채 '자물쇠와 열쇠' 코드도 딱 이런 느낌이다. 쿼리에 맞춰서 부분그래프를 빼낸다음 뺸 부분을 규칙에 맞게 테두리만 회전시킨다. 회전시킨 그래프를 다시 원래그래프에 넣는다. 쿼리가 ..
https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제유형 : BFS 문제풀이 : 전형적인 BFS문제로 풀면된다. 그래프상에서 상하좌우로 이동하면서 방문전이면서 이동가능한 위치를 큐에 삽입하면서 최단거리를 갱신한다. 최단거리를 갱신할때는 count배열의 기존값과 현재값 ( 이동하기전위치값 +1 )를 비교해서 더 작은값으로 갱신 처음에 count배열의 초깃값을..
https://programmers.co.kr/learn/courses/30/lessons/42860# 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제유형 : 그리디 문제풀이 : 생각보다 안풀려서 좀 애먹었다.. 나는그냥 alpha배열을 미리 만들어서 알파벳 변환의 최소비용은 쉽게 딕셔너리로 구했다. 좌우이동을 결정하는것에서 어려움을 겪었는데 이 문제가 그리디로 분류되있는 이유는, 현재지점에서 다음 A가아닌문자를 만날수있는 좌우이동중 더 작은 값을 갖는쪽으로 택해야하기 때문이다. 즉,..